我正在嘗試使用Canvas繪製類似Dialog的窗體。我可以在其中放置圓角邊框和圓角矩形作爲標題/標題。我只想用畫筆填寫標題。Delphi 7 - 如何用畫筆填充圓角矩形?
不過,我努力填補這個稱號。當使用FillRect
時,所有Form都會重新粉刷。試圖在這裏搜索,所以如果我錯過了,只要指出我去哪裏。否則,我該怎麼做?使用Delphi 7,OnPaint事件。
procedure TCustomDialog.FormPaint(Sender: TObject);
var
Rect: TRect;
BorderColor: TColor;
BrushColor: TColor;
begin
// Rect for Form's borders;
Rect.Left := 0;
Rect.Top := 0;
Rect.Right := ClientWidth;
Rect.Bottom := ClientHeight;
BorderColor := HtmlToTColor('#ffffff');
BrushColor := HtmlToTColor('#ffffff');
// Here I set the colors of Canvas.Pen (border) and Canvas.Brush (Filling),
// similar to Bootstrap themes/classes (Default, Success, Warning, Danger);
case DialogType of
dtInformation:
begin
BorderColor := HtmlToTColor(Header_Color_Pen_Information);
BrushColor := HtmlToTColor(Header_Color_Brush_Information);
end;
dtSuccess:
begin
BorderColor := HtmlToTColor(Header_Color_Pen_Success);
BrushColor := HtmlToTColor(Header_Color_Brush_Success);
end;
dtWarning:
begin
BorderColor := HtmlToTColor(Header_Color_Pen_Warning);
BrushColor := HtmlToTColor(Header_Color_Brush_Warning);
end;
dtError:
begin
BorderColor := HtmlToTColor(Header_Color_Pen_Error);
BrushColor := HtmlToTColor(Header_Color_Brush_Error);
end;
end;
with Canvas do
begin
Pen.Color := BorderColor;
Pen.Width := Form_Pen_Width;
// Draw rounded borders for Form;
RoundRect(1, 1, Rect.Right - 1, Rect.Bottom - 1, Form_Border_Radius - 1, Form_Border_Radius - 1);
// Rect for Dialog's Header;
Rect.Left := Component_Gutter;
Rect.Top := Component_Gutter;
Rect.Right := ClientWidth - Component_Gutter;
Rect.Bottom := Form_Header_Height;
RoundRect(Component_Gutter, Component_Gutter, ClientWidth - Component_Gutter, Form_Header_Height,
Form_Border_Radius - 2, Form_Border_Radius - 2);
Brush.Color := BrushColor;
FillRect(Rect);
end;
end;
您的圖片鏈接是brok恩。請勿在外部網站上放置圖片。 StackOverflow有它自己的圖像託管。請直接將您的圖片上傳到StackOverlow。 –
@RemyLebeau編輯。 –
在繪製圓角矩形的準備工作中,將「Brush」定義爲您想要填充的顏色。從doc:*使用RoundRect使用Pen畫出一個圓角矩形,並用Brush *填充它。如果我理解你的代碼,在'RoundRect()'調用之前移動'Brush.Color:= BrushColor;'行並移除'FillRect()'調用。 –