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

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;

上一篇:jQuery radio取值,checkbox取值,select取值


下一篇:Cmake时 如何在windows命令行 选择vs版本