Timage控件的问题
procedure TForm1.FormResize(Sender: TObject);
var
d,k:integer;
i:integer;
begin
image1.Top:=20;
image1.Height:=self.ClientHeight-40;
d:=image1.Height*9 div 10;
image1.Width:=d; //注:上面这部分省略可以看到下面画的线,但加上就不行了
with image1.Picture.Bitmap.Canvas do
begin
pen.Width:=2;
pen.Color:=clblack;
MoveTo(image1.Width-10,20);
lineto(image1.Width-10,100);//这儿画的线,为啥看不到呢,帮忙给看一下
end;
end;
[解决办法]
image调整大小后,image1.Picture.Bitmap也需要调整一下
[解决办法]
测试了一下,是坐标没算好
[解决办法]
onresize好像是会触发很多次的,这个时机可能不太好
我一般在onactive的第一次触发里设置
[解决办法]
如果将窗体拉伸
MoveTo(image1.Width-10,20);
lineto(image1.Width-10,100);//这儿画的线,为啥看不到呢,帮忙给看一下
前面的X肯定是超出控件的宽度,你只要在改变时看一下这两个值就知道了
[解决办法]
image1.Picture.Bitmap.Height:=image1.Height;
image1.Picture.Bitmap.Width:=image1.Width;
Image1.Picture.Bitmap.LoadFromFile('board2.bmp');
改变一下顺序试试看:
Image1.Picture.Bitmap.LoadFromFile('board2.bmp');
image1.Picture.Bitmap.Height:=image1.Height;
image1.Picture.Bitmap.Width:=image1.Width;
[解决办法]
检查image1的autosize属性和strech属性
[解决办法]
TImage大小改变后,与之对应的的Picture.Bitmap必须缩放到TImage一样的大小,再画线才能看到线条,否则,先画线条,因为TImage自动缩放图像,在“缩”的时候,就有可能把线条“缩”没了。
[解决办法]
with image1.Picture.Bitmap.Canvas do
改为 image1.Canvas
在仔细分析你的业务,不要在 onresize 中写这样的代码。
[解决办法]
可以说,你这段代码写得非常冗余,乱写一气。
image1.Picture.Bitmap.Height:=image1.Height;
image1.Picture.Bitmap.Width:=image1.Width;
这种写法很不好。
你描述下你要的功能,代码我可以给你写出来。
[解决办法]
象棋棋盘这种软件,应该不需要进行缩放的,一个固定大小的棋盘,棋子就可以了。
[解决办法]
加一行:
Image1.Update;
[解决办法]
[解决办法]
procedure TForm1.FormResize(Sender: TObject);
var
d,k:integer;
i:integer;
begin
//以下两种,你挑一种
{ image1.Top:=20; //第一种,OK
image1.Height:=self.ClientHeight-40;
d:=image1.Height*9 div 10;
image1.Width:=d;
with image1.Canvas do
begin
pen.Width:=2;
pen.Color:=clblack;
MoveTo(image1.Width-10,20);
lineto(image1.Width-10,100);
end;
}
image1.Top:=20; //第二种,OK
image1.Height:=self.ClientHeight-40;
d:=image1.Height*9 div 10;
image1.Width:=d;
image1.Picture.Bitmap.Width:=image1.Width;
image1.Picture.Bitmap.Height:=image1.Height;
with image1.Picture.Bitmap.Canvas do
begin
brush.Color:=clwhite;
fillrect(rect(0,0,image1.Width,image1.Height));
pen.Width:=2;
pen.Color:=clblack;
MoveTo(image1.Width-10,20);
lineto(image1.Width-10,100);
end;
end;
[解决办法]
检查image1的autosize属性和strech属性
[解决办法]
晕撒的,干啥子用TImage来搞!
TImage处理了一票消息,我挺楼上的 毛老大的说法
建议,楼主直接从TGraphicControl写一个自己处理绘制,会比TImage单纯许多