首页 > 其他 > 详细

Canvas.Pixels 实例:判断一点是否在区域中

时间:2017-02-07 13:34:31      阅读:299      评论:0      收藏:0      [点我收藏+]

The Windows 3.1 and Windows 95 GDI heap is limited in regards 
to scan converting large and complex regions such as Ellipses, 
Polygons, and PolyPolygons. One "Brute Force" technique is to 
create an "in memory" monochrome bitmap and draw the 
required shape in black. You can then test to see if a given point in 
the bitmap is black or white. If the test pixel is black, then the given 
point is "in" the given region.

Example:

procedure TForm1.Button1Click(Sender: TObject);
var
  bm : TBitmap;
begin
  bm := TBitmap.Create;
  bm.Monochrome := true;
  bm.Height := 100;
  bm.Width := 100;
  bm.Canvas.Brush.Color := clWhite;
  bm.Canvas.FillRect(Rect(0, 0, 100, 100));
  bm.Canvas.Brush.Color := clBlack;
  bm.Canvas.Pen.Color := clBlack;
  bm.Canvas.Ellipse(10, 10, 90, 90);
  if bm.Canvas.Pixels[20, 20] = clBlack then
    ShowMessage(‘Point : (20, 20) is in region‘) else
    ShowMessage(‘Point : (20, 20) is not in region‘);
  if bm.Canvas.Pixels[50, 50] = clBlack then
    ShowMessage(‘Point : (50, 50) is in region‘) else
    ShowMessage(‘Point : (50, 50) is not in region‘);
  bm.Free;
end;

Canvas.Pixels 实例:判断一点是否在区域中

原文:http://www.cnblogs.com/yzryc/p/6373560.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!