注册 登录
编程论坛 Delphi论坛

求助:如何设置背景颜色

Evenchao 发布于 2013-04-18 17:14, 2199 次点击
如何设置背景颜色?  就是我在image上画了一些矩形、椭圆的图形,但是这时我要设置image的背景颜色。可是用image.canvas.fillrect(image.ClienRect);时,这时会把之前画的矩形、椭圆等图形给覆盖了。。如何解决这个问题。。。谢谢
12 回复
#2
zcwthy2013-05-03 22:59
先创建一个image放下面设置背景,再建一个image放上面用来画图形。
#3
Evenchao2013-05-04 09:15
回复 2楼 zcwthy
这样虽然可以实现,但是把这幅图存在文件的时候,怎么存到一个文件里呢???这样的话要存在两个文件里。。这该怎么办?
#4
zcwthy2013-05-04 13:06
用截图功能将那个区域的画布保存就行了。
#5
Evenchao2013-05-04 14:21
回复 4楼 zcwthy
用代码怎么实现截图功能????? 我的意思是,当点击保存按钮的时候,就会把image1和image2保存到一个文件里,怎么实现?
#6
Evenchao2013-05-04 14:23
回复 4楼 zcwthy
请问下,能不能用层的概念实现,如何实现?
#7
zcwthy2013-05-04 17:06
var FBmp: TBitmap;
begin
   FBmp:=TBitmap.Create;
   FBmp.Width:=image1.Width;
   FBmp.Height:=image1.Height;
   FBmp.PixelFormat:=pf24bit;
   FBmp.Canvas.CopyRect(Rect(0,0,FBmp.Width,FBmp.Height),
                             Form1.image1.Canvas,
                             Rect(0,0,FBmp.Width,FBmp.Height));
   SaveDialog1.Execute;
   FBmp.SaveToFile(SaveDialog1.FileName);
end;

或者用BitBlt也行
#8
Evenchao2013-05-04 20:48
回复 7楼 zcwthy
你好,再打扰下,你这种方法文件中只能存储一张image1上的图形,而底图的Image2颜色的设置并没有在存储在文件中。 我试了下,使用两次BitBlt也不行,也只能存储一个image上的图片。
#9
zcwthy2013-05-04 22:44
背景用image控件,画图用PaintBox控件
var FBmp: TBitmap;
begin
   FBmp:=TBitmap.Create;
   FBmp.Width:=image1.Width;
   FBmp.Height:=image1.Height;
   FBmp.PixelFormat:=pf24bit;
   FBmp.Canvas.CopyRect(Rect(0,0,FBmp.Width,FBmp.Height),
                             Form1.PaintBox1.Canvas,     //这里改了
                             Rect(0,0,FBmp.Width,FBmp.Height));
   SaveDialog1.Execute;
   FBmp.SaveToFile(SaveDialog1.FileName);
end;
还不清楚可以加Q:壹零四零六零二一三四


[ 本帖最后由 zcwthy 于 2013-5-4 22:54 编辑 ]
#10
Evenchao2013-05-05 19:37
回复 9楼 zcwthy
我查了下。要先设置image.canvas.copymode := cmSrcAnd;  但是,这样的话,存储起来的时候,当底色与画上去的线条颜色相近的时候,存储起来的时候就不会有这条线,而且当有底色的时候,画了有颜色的矩形的时候,存储起来的时候矩形的颜色也变了。。  有什么更好的方法么??  而且把两个image合并为一个张图的时候,当读文件的时候,如何设置下面那个image呢???
#11
zcwthy2013-05-05 19:45
你的目的是什么?你要什么效果?
#12
Evenchao2013-05-06 08:55
我现在正在做一个类似于winndows的画板,我想要显示出填充底色,而不覆盖之前上面已经有的图形,并且能对这幅图片进行存储和读取。有什么好方法吗???  
1