画图程序遇到很怪的问题(100分)

  • 主题发起人 主题发起人 hb207
  • 开始时间 开始时间
H

hb207

Unregistered / Unconfirmed
GUEST, unregistred user!
有个问题请教,请耐心往下看,我真的很需要大虾的帮忙,万分感谢!
我在做一个画图程序遇到很怪的问题,我在程序鼠标点击画板时动态生成IMAGE控件,
然后从文件中LOAD图片(*.Bmp),指定IMAGE的left和top分别为鼠标处坐标X、Y。
但我在IMAGE四周画边框(用Polyline)时(很确定指定的四点就是IMAGE的四个角点)
却发现,画出的边框游离于IMAGE。其中我在程序中也跟踪了坐标,发现用polyline
画边框时的坐标与IMAGE的四点坐标完全相同,但画边框时却不重合。
数据如下:IMAGE的左上角的坐标(238,106),画边框时polyline指定参数左上角
的坐标为IMAGE的左上角的坐标即(238,106),但实际画出来的边框的左上角为(238,134),
这是什么原因?急切等待答复!!!
 
我试了一下,没有发现你说的问题。
 
要注意的是:你是在Form.Canvas上画线还是在Image.Canvas上画线。
下面是在Image.Canvas上画边框,其实就是画一个矩形。

uses extctrls;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
m :TImage;
begin
m :=TImage.Create(self);
m.Parent :=Form1;
m.AutoSize :=True;
m.Left :=x;
m.Top :=y;
m.Picture.LoadFromFile('f:/图片/end004.bmp');
m.Canvas.Pen.Color :=clRed;
m.Canvas.Brush.Style :=bsClear;
m.Canvas.Rectangle(0,0,m.Width,m.Height);
end;
 
你是不是用了Align属性为alTop的Panel之类的控件,看看它的Height是不是28(134-106)
 
画边框问题已经解决,又遇到新的问题。我在定位所画出来的线(就是重画所有的线,
然后加亮选中的线),但我每当在画布上按下鼠标时,画布上的图片就闪的厉害
(整个画布在闪)。怎么样解决这个问题?
 
后退
顶部