Canvas中frameRect&FillRect的问题(50分)

  • 主题发起人 主题发起人 akosboy
  • 开始时间 开始时间
A

akosboy

Unregistered / Unconfirmed
GUEST, unregistred user!
我在IMAGE中使用鼠标拖出一个矩形框,使用FillRect可以画出,但是使用FrameRect就没反应了,哪位帮我看看这段代码有什么问题,谢谢:)
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ifClick:=true;
iStartX:=x;
iStartY:=y;
end;
***************************************************************************
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ifClick then
begin
image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + 'aab.bmp');
image1.Canvas.FillRect(rect(min(iStartX,x),max(iStartY,Y),max(iStartX,X),min(iStartY,Y)));
end;
end;
*************************************************************************
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ifClick then
begin
image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + 'aab.bmp');
image1.Canvas.FillRect(rect(min(iStartX,x),max(iStartY,Y),max(iStartX,X),min(iStartY,Y)));
ifClick:=false;
end;
end;
 
FillRect 使用当前的画刷填充矩形,
FrameRect 使用当前的画刷画边框,不填充。
 
我知道,但是我把上述代码中FillRect换成FrameRect后连边框都画不出来,不知道为什么
 
那我先试试。
 
image不装载图片时可以用FillRect画边框,装载图片的没有试过
 
设置 Canvas.Brush.Color 再 Canvas.FrameRect() 试试。
 
你这程序运行很慢啊!在 MouseMove 里面装载图片。
我预先装载图片,仅在 MouseMove 里面画 FrameRect 都闪烁的厉害。
 
老兄:你可真够意思,除了这么个难题,费了我半个小时。
你仔细看看下面的和你的有何不同:
rect(min(iStartX,x),min(iStartY,Y),max(iStartX,X),max(iStartY,Y))
 
哦,我知道了,原来问题出在画的区域不对啊。我怎么没有看出来。
 
谢谢wfzha,我已经发现这个问题了,一时大意用了标准坐标系去考虑坐标:)不过还是谢谢你,积分归你了[:)]
 
接受答案了.
 

Similar threads

后退
顶部