Como desenhar em um controle sem canvas? Por exemplo, o Tpanel não possui as propriedades de uma tela, por isso é difícil escrever ou desenhar nele. Você gostaria de reembalá-lo você mesmo? Por favor, me incomode! Como podemos lidar com isso convenientemente?
Dê uma olhada neste código
unidade Unidade1;
interface
usa
Windows, Mensagens, SysUtils, Variantes, Classes, Gráficos, Controles, Formulários,
Diálogos, StdCtrls, ExtCtrls;
tipo
TForm1 = classe(TForm)
Painel1: TPanel;
Botão1: Botão T;
Procedimento Button1Click(Remetente: TObject);
privado
{Declarações privadas}
público
{Declarações públicas}
fim;
var
Formulário1: TForm1;
implementação
{$R *.dfm}
procedimento TForm1.Button1Click(Remetente: TObject);
var
PainelCanvas: TCanvas;
começar
PanelCanvas := TControlCanvas.Create;
TControlCanvas(PanelCanvas).Control := Painel1;
PanelCanvas.Brush.Style := bsClear;
PanelCanvas.Pen.Color := clAzul;
PanelCanvas.Rectangle(2, 2, Panel1.Width - 2, Panel1.Height - 2);
PanelCanvas.Font.Name:='楷体_GB2312';
PanelCanvas.Font.Size:=24;
PanelCanvas.TextOut(Panel1.Largura div 2,Panel1.Altura div 2,'OK');
PainelCanvas.Free;
fim;
fim.
Isso pode ser feito ao aplicar em pequenas quantidades. Claro, se você quiser aplicá-lo a um controle sem tela, será mais conveniente usar o método acima para envolver o controle original e desenvolver um novo controle.