很简单,从Tpanel派生了一个类TLine
处理Resize
procedure TLine.Resize;
var
rgn: HRGN;
X, Y, W, H: Integer;
begin
inherited;
Color := clBlue;
if BeginPath(Canvas.Handle) = false then
begin
ShowMessage(inttostr(GetLastError));
end;
if SetBKMode(Canvas.Handle, TRANSPARENT) = 0 then
begin
ShowMessage(inttostr(GetLastError));
end;
Canvas.Font.Name := 'ËÎÌå';
Canvas.Font.Size := 200;
Canvas.MoveTo(width,2);
Canvas.LineTo(2,Height);
Canvas.LineTo(0, height-2);
Canvas.LineTo(width-2, 0);
Canvas.LineTo(width,2);
if EndPath(Canvas.Handle) = false then
begin
ShowMessage(inttostr(GetLastError));
end;
rgn := PathToRegion(Canvas.Handle);
if rgn = 0 then
begin
ShowMessage(inttostr(GetLastError));
end
else
SetWindowRgn(Handle, rgn, true);
end;
然后设置大小后线条也会变化,其实偶上个星期就实现了,只是赋值赋错了,
搞得线条一直没有画出来,今天静下心来检查了一遍而已