Используя следующий код в Delphi 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;
я получаю это: (Желтую область показывает границу PaintBox1).
alt text http://www.freeimagehosting.net/uploads/62cf687d29.jpg
(изображение показывает форму с желтой коробкой [PaintBox1] в центре. Однако мой красный прямоугольник в [rgnMain] был обращен в позиции 0,0 на форме)
Моих ожиданий было то, что красный прямоугольник будет в левом верхнем углу холста PaintBox1, а не в холсте формы. Почему нет? Можно ли использовать регионы только с элементами управления, имеющими дескриптор Windows?
Thanks
Я отредактировал ваше сообщение, чтобы изображение появилось. –
Спасибо за это, Mason – Xanyx