100分求救 为什么我连这都不知道(100分)

  • 主题发起人 主题发起人 王森章
  • 开始时间 开始时间

王森章

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟哦碰一难题 一个多边形 可以手动 经过一条固定位置的直线
多边形过直线的部分改变颜色 我式过用windows Api fillRgn (hdc:Hdc;rgn:hrgn;
brush:hbrush); 但把画刷的颜色属性一改 便把整个多边形的填充颜色变了
 
你用XOR模式填充试试看!
 
你只是改一条直线的颜色,不要用fillrgn吧。只要在多边形内画一条有颜色的线就可以了。
注意,如果拿api画,要注意保存DC和恢复DC。
 

FillRgn?他的作用是:The FillRgn function fills a region by using the specified brush.
(用brush填充一个区域)
把画笔的color改一下,再moveto,lineto一下你的那条直线不行吗?
 
可能是我的问题有问题,我原本是想改变多边形的一部分的填充颜色,
并非改变直线的颜色, 这个问题我以解决 最初是过程中repaint 函数用错了
给各位风尚每人33分 感谢对小弟的支持
 
你的问题没说不清楚呀!
 
Use FloodFill instead of FillRgn:

procedure TForm1.Button1Click(Sender: TObject);
var
AColor: TColor;
begin
Canvas.Pen.Color := clRed;
Canvas.Brush.Style := bsClear;
Canvas.Rectangle( 10, 10, 200, 200);
Canvas.Pen.Color := clGreen;
Canvas.MoveTo(5, 100);
Canvas.LineTo(210, 100);
AColor := Canvas.Pixels[15,15];
Canvas.Brush.Color := clBlue;
Canvas.FloodFill(15,15, AColor, fsSurface);
Canvas.Brush.Color := clYellow;
Canvas.FloodFill(15,115, AColor, fsSurface);
end;
 
接受答案了.
 
后退
顶部