我在一处Timage上画图,怎么才能让用PEN画线在用BRUSH填充的图形区显示出来.(100分)

B

Boblee

Unregistered / Unconfirmed
GUEST, unregistred user!
是这样我在一个矩形区域,我用Brush填充,然后再在这个矩形区画一条线,但这条看不见。
我不怎么回事。矩形和线的位置都是动态在变的.在使用Brush 和 Pen 之前,我把其它缺省的
属性都保存下来,在我画完后再还原的。部分code如下:
...
FillRect(g_oldViewRect); ;//清除原来的矩形区
oldbcl := Brush.clor;//保存属性
oldbsl := Brush.Style;
oldpcl := Pen....

Brush.Color := VIEW_RECT_BRUSH_COLOR ;
Brush.Style := bsDiagCross;
g_oldViewRect := Rect(g_oldpanminValue+2,g_oldtiltminValue+2,
g_oldpanmaxValue-2,g_oldtiltmaxValue-2);
Rectangle(g_oldViewRect); //画新的矩形区
Pen.Color := lc; //lc 与VIEW_RECT_BRUSH_COLOR的颜色不一样。
Pen.Mode := pmXor;
MoveTo(oldP,oldLP.X); //oldP,oldLP.x,oldP,oldLP.y 在矩形区内。
LineTo(oldP,oldLP.Y);

Brush.color := oldbcl;
Brush.Style:= oldbsl ;
pen.Color := old....
....
...

 
MoveTo(oldP,oldLP.X); //oldP,oldLP.x,oldP,oldLP.y 在矩形区内。
LineTo(oldP,oldLP.Y);

oldLP.x和oldLP.y 相等吗,如果在同一点上画线?恐怕看不到。
 
oldLP.x与oldLP.y不相等。
 
试一下我的代码,在 Form上画很正常:

procedure TForm1.Button3Click(Sender: TObject);
var
g_oldViewRect:TRect;
begin
with canvas do
begin
Brush.Color := $ff0000;
Brush.Style := bsDiagCross;
g_oldViewRect := Rect(100,100,300,300);
Rectangle(g_oldViewRect);
Pen.Color := $00ff00;
Pen.Mode := pmXor;
MoveTo(100,100);
LineTo(300,300);
end;
end;
 
谢谢你们,我知道原因了,因为其实我画矩形与画线不是一起的,有个先后顺序,原因就在这
顺序上。
感谢你们的热心帮助。
给分了。
 
接受答案了.
 
顶部