利用image1控件载入jpeg或bmp图像,然后在其上进行标绘,但标的图标并不是在鼠标位置,请问如何控制 ( 积分: 50 )

  • 主题发起人 主题发起人 eeigyl
  • 开始时间 开始时间
E

eeigyl

Unregistered / Unconfirmed
GUEST, unregistred user!
利用image1控件载入jpeg或bmp图像,然后在其上进行标绘,但标的图标并不是在鼠标位置,请问如何控制,就是我用鼠标点某点,可以在该点画一个圆等,哪位知道,最好有一小段可以演示的小程序,谢谢
 
利用image1控件载入jpeg或bmp图像,然后在其上进行标绘,但标的图标并不是在鼠标位置,请问如何控制,就是我用鼠标点某点,可以在该点画一个圆等,哪位知道,最好有一小段可以演示的小程序,谢谢
 
得到鼠标的位置知道吧!
比如把image分成四份 在其中一个中画图
在MouseDown中添加代码
var point:TPoint;
lp,rp:integer;
gx,gy,gridx,gridy:integer; //
begin
GetCursorPos(point);
point:=Image1.ScreenToClient(point);
lp:=point.X;
rp:=point.Y;
gridx:=Image1.Width div 2;
gridy:=Image1.Height div 2 ;
GX:=(lp div GridX)*GridX;
GY:=(rp div GridY)*GridY;
with Image1 do
begin
Canvas.Pen.Color:=clGreen;
Canvas.Brush.Color:=clGray;
Canvas.Ellipse(gx,gy,gx+gridx,gy+gridy);
end;
end;
 
我试了一下不行呀,我是想在image1上任意点用鼠标按一下,然后在该点显示一个文字或圆,可是你给的程序好象不是这样的呀,在图上某点按下,结果在其它地方画呀
 
顺便说一下,我的image1中的图像比image1大,我使用了stretch,使之为真,总是不在相应的位置画,哪位知道如何处理,当stretch为假时,处理正确
 
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
image1.Canvas.Pen.Color := Clred;
image1.Canvas.Brush.Color := ClGray ;
image1.Canvas.Ellipse(x,y,x+5,y+5);
end;
是这样吗
 
因为操作canvas实际上是操作的image.Picture.Bitmap.canvas,所以对应不正确
解决方法
1:计算出所放的比例,然后将鼠标坐标x,y对应到原始图像的实际坐标
2:如果image大小以后不会改变,可以更改image.Picture.Bitmap.bitmap的内容,使之大小为image控件的大小
 
djptony,你好,能不能给我一小段可以用的程序,急着用,谢谢
 
后退
顶部