怎么样通过程序将一图片随机分割成11幅,放到IMAGE1——IMAGE11中去!(100分)

T

tianrei

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么样通过程序将一图片随机分割成11幅,放到IMAGE1——IMAGE11中去!
谢谢!
 
分割成11幅,原图比例大的吗,还是要缩放的
 
而且是分成可以重新拼接起来的11幅小图吗
 
你要做拼图游戏吗!

如果是,为什么不先把它分成11幅
 
如果是拼图游戏,你可以先分成11份,然后再随机打乱顺序,就可以了。
 
的确,我是做拼图游戏,已经作好了,
用PHOTOSHOP等先把图片切割好用户就不能根据自己的喜好来添加图片
我要用程序切割用户读入的图片。
再问:
怎么样通过程序将一图片随机分割成11幅,放到IMAGE1——IMAGE11中去!
谢谢!
当然是分成可以重新拼接起来的11幅小图!
 
哎,怎么还不清楚?不是随机分成11块,而是固定的分成12块,然
后随机取11块,打乱。我以前写过类似的游戏,可以调入图片,可
以从3*3到10*10选择(只是正方形)。
但是我觉得还没有我十多年前看到的拼图游戏好,虽然不能换图,
虽然只是3*3,可是却能自己给出解法,我可做不到……
差点忘乐,自己去查TCanvas.CopyRect吧
 
procedure TForm1.Button1Click(Sender: TObject);
var
Bitmap: TBitmap;
MyRect, MyOther: TRect;
begin
MyRect := Rect(10,10,100,100);
MyOther := Rect(10,111,100, 201);
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile('c:/windows/tartan.bmp');
Form1.Canvas.BrushCopy(MyRect, Bitmap, MyRect, clBlack);
Form1.Canvas.CopyRect(MyOther,Bitmap.Canvas,MyRect);
Bitmap.Free;
end;
 
to :panyongze
我们大家都知道你的DLEPHI的帮助学的好,
但你也不用把帮助都复制上来把,太占版面了把,斑竹会不高兴喔!
你的代码能说明我的问题吗!


我不是把图片分割到FORM上,而是IMAGE上。
并且,我读入的图片不一定是BMP,可能是JPG或其他一些图片格式。
源图片大小没有确定,通过对话框把他读入到IMAGE中,在把他切割后放到
IMAGE1——IMAGE2中,我想需要的是可行的代码!
 
你真是笨的可以呀,使用TBitmap和TImage的基本方法是一样的所以不存在图片是BMP还是
JPJ的问题,第二能把图片分割到FORM上,就能把图片分割到TImage上。上面的代码说明了
你所需要的所有基本功能,有什么不对!用不用给你写一个完整的拼图游戏代码?
 
哈哈!我有一个完整的拼图游戏代码,c/c++ 和delphi的都有,想要吗?给分吧!
 
现在把问题简化一点:
有:IMAGE1,IMAGE2,IMAGE3(IMAGE1中已经掉入了图片!)
分别对应的Height,width(300,300)(300,150)(300,150)
现在把IMAGE1等分成与IMAGE2,IMAGE3大小相同的两等分
用COPYRECT方法把他们分别COPY到IMAGE2,IMAGE3上。
能写出代码吗?谢谢!
我能够将其横着分,再贴上去,但竖着分老是不对!
如果IMAGE1中读入的是(非位图格式如JPG等)则系统运行时会报错,
大概说使用的图片不是位图!能有办法解决分割非位图文件吗?
 
先把JPG格式转换成BMP的,再读入TImage里面不就行了。

我这里有能自己给出解法的算法(3*3),前几天不小心就Download了一个。
 
我已经把程序做好了,放在一个叫www.czvms.com的网站上,可以用网络蚂蚁下载!
有源代码!
 
读取图象时由于图片的大小不同要用image17.Canvas.StretchDraw(rect(0,0,320,320),bitmap);处理
分图的方法和:panyongze,有些相似
arects:=rect(0,0,w,h);
arectd:=rect(0,0,image1.height,image1.width);
image1.canvas.copymode:=cmsrccopy;
image1.canvas.CopyRect(arectd,image17.canvas,arects);
由于我做这个程序是由于我对DELPHI不熟悉想练练!
谢谢大家的帮助,虽然我和panyongze吵了架。(我主要恼火他把DELPHI的帮助般下没有说明)
但他答案和实际最接近。
我准备给他加分、!

 
实际上分割位图不是那样简单,最重要的是宽度一定要是4的倍数,如果不够必须补齐,否则
生成的图形会有问题。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
962
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部