떨어져 그것을립니다 (노란색 영역 PaintBox1의 경계를 보여줍니다) : 는 영역을 채우는 것은 델파이 2007에서 다음 코드를 사용하여 캔버스
procedure TfrmTest.PaintBox1Paint(Sender: TObject);
const
Rect_Size = 10;
begin
PaintBox1.Canvas.Brush.Color := clYellow;
PaintBox1.Canvas.FillRect(Rect(0, 0, PaintBox1.width, PaintBox1.height));
PaintBox1.Canvas.Brush.Color := clRed;
DrawARect(PaintBox1.Canvas, 0, 0, Rect_Size, Rect_Size);
end;
procedure TfrmTest.DrawARect(ACanvas: TCanvas; iLeft, iTop, iWidth, iHeight: Integer);
var
rgnMain: HRGN;
begin
rgnMain := CreateRectRgn(iLeft, iTop, iLeft + iWidth, iTop + iHeight);
try
SelectClipRgn(ACanvas.handle, rgnMain);
ACanvas.FillRect(ACanvas.ClipRect);
SelectClipRgn(ACanvas.handle, 0);
finally
DeleteObject(rgnMain);
end;
end;
내가이 얻을.
alt text http://www.freeimagehosting.net/uploads/62cf687d29.jpg
은 (이미지 중앙에 노란색 상자 [PaintBox1]와 양식을 보여줍니다. 그러나 내 빨간 rectange이 [rgnMain] 양식에 POS 0,0에 그려져있다)내 기대를 빨간색 직사각형이 폼의 캔버스가 아닌 PaintBox1 캔버스의 왼쪽 상단에 위치한다는 것입니다. 왜 그렇지 않은가? 영역은 Windows 핸들이있는 컨트롤에서만 사용할 수 있습니까?
감사합니다.
이미지를 표시하도록 게시물을 편집했습니다. –
고마워, 석수 – Xanyx