如题,比如有一幅卡通的图片,放在窗体中。所显示的窗体就是图片,是不规则的图形窗体。请问应该怎么实现?

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        procedure Button2Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormPaint(Sender: TObject);
      private
        { Private declarations }
        frm_pt, frm_pt_border : array[1..9] of TPoint;
        pt_result : HRGN;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button2Click(Sender: TObject);
    begin
      close;
    end;procedure TForm1.FormCreate(Sender: TObject);begin
      frm_pt[1].X := 4;     frm_pt_border[1].X := 4;
      frm_pt[1].Y := 4;     frm_pt_border[1].Y := 4;
      frm_pt[2].X := 4;     frm_pt_border[2].X := 4;
      frm_pt[2].Y := 20;    frm_pt_border[2].Y := 20 - 1;
      frm_pt[3].X := 10;    frm_pt_border[3].X := 10;
      frm_pt[3].Y := 20;    frm_pt_border[3].Y := 20 - 1;  frm_pt[4].X := 10;    frm_pt_border[4].X := 10;
      frm_pt[4].Y := 298;   frm_pt_border[4].Y := 298 - 1;
      //右半部
      frm_pt[5].X := 452;   frm_pt_border[5].X := 452;
      frm_pt[5].Y := 298;   frm_pt_border[5].Y := 298 - 1;  frm_pt[6].X := 482;   frm_pt_border[6].X := 482;
      frm_pt[6].Y := 268;   frm_pt_border[6].Y := 268 - 1;  frm_pt[7].X := 483;   frm_pt_border[7].X := 483 - 1;
      frm_pt[7].Y := 20;    frm_pt_border[7].Y := 20 - 1;
      frm_pt[8].X := 489;   frm_pt_border[8].X := 489 - 1;
      frm_pt[8].Y := 20;    frm_pt_border[8].Y := 20 - 1;
      frm_pt[9].X := 489;   frm_pt_border[9].X := 489 - 1;
      frm_pt[9].Y := 4;     frm_pt_border[9].Y := 4;
      //应用区域
      pt_result := CreatePolygonRgn(frm_pt, 9, 1);
      SetWindowRgn( form1.Handle, pt_result, false);
    end;procedure TForm1.FormPaint(Sender: TObject);
    begin
      //区域着色
      form1.Canvas.Brush.Color := $00E7DFBE;
      form1.Canvas.FillRect(rect(5, 5, 488, 20));  form1.Canvas.Brush.Color := $00E7E7E7;
      form1.Canvas.FillRect(rect(11, 21, 481, 296));  //边界轮廓
      form1.Canvas.Polygon(frm_pt_border);
      //中横线
      form1.Canvas.MoveTo(10, 19);
      form1.Canvas.LineTo(482, 19);
      //下三角
      form1.Canvas.MoveTo(452, 297);
      form1.Canvas.LineTo(452, 267);
      form1.Canvas.LineTo(482, 267);
    end;end.你说的这种我忘了。是有相关函数,把一个图片的某种颜色去掉,就变成不规则窗口了
      

  2.   

    很多软件都是只看到不规则图形的界面,而不是一个多边等界面。
    我看到过这种控件,但是VB的,在DEIPHI中安装不上。
    谁能告诉哪有这种控件啊?