Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
ВнизОтрисовка метки и FocusRect Найти похожие ветки
← →
jack128 © (2004-11-03 04:59) [0]День добрый.
Есть такой код:constructor TSchemeLabel.Create(AOwner: TSchemeElement);
begin
inherited;
FLabel := TLabel.Create(nil);
FLabel.Transparent := True;
end;
procedure TSchemeLabel.Draw(ACanvas: TCanvas);
begin
MoveWindowOrg(ACanvas.Handle, FLabel.Left, FLabel.Top);
try
FLabel.Perform(WM_PAINT, Integer(ACanvas.Handle), 0);
finally
MoveWindowOrg(ACanvas.Handle, -FLabel.Left, -FLabel.Top);
end;
end;
Все хорошо, метка нормально отрисовывается, но есть но..
На той же канве нужно отрисовать FocusRect, а вот этот прямоугольник не рисуется. Рисую так:with SchemeFrame.PaintBox.Canvas do
Если не рисовать на канве TSchemeLabel, то отрисовка проходит нормально. Более того, если положит на SchemeFrame обычную метку, то все тоже отлично рисуется..
begin
Pen.Mode := pmCopy;
Pen.Style := psSolid;
Pen.Color := clBlack;
Brush.Style := bsSolid;
Brush.Color := SchemeFrame.Color;
DrawFocusRect(SelRect);
end;
Может у кого есть какие нить соображения??
← →
code2k © (2004-11-03 16:19) [1]up
← →
jack128 © (2004-11-05 15:44) [2]мдя. В общем забил я на попытки понять что происходит... Сохраняю контекст и не мучаюсь..
var
SavedDC: Integer;
begin
SavedDC := SaveDC(ACanvas.Handle);
try
MoveWindowOrg(ACanvas.Handle, FLabel.Left, FLabel.Top);
FLabel.Perform(WM_PAINT, Integer(ACanvas.Handle), 0);
finally
RestoreDC(ACanvas.Handle, SavedDC);
end;
end;
← →
Rem © (2004-11-05 16:27) [3]А зачем Вам вообще FLabel?
← →
Rem © (2004-11-05 16:36) [4]И что такое SelRect? Он попадает в область рисования?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.04 c