我用image.canvas.rectangle()画矩形或其他封闭式图形里面都填充白色,把画片给遮挡了,怎么样设置内部是透明的,只要边框?

解决方案 »

  1.   

      img1.Canvas.Brush.Style := bsClear;
      img1.Canvas.Rectangle(1, 1, 20, 20);
      

  2.   

    别在image上画了,他会带底图颜色的,在form上或panel上画吧
      

  3.   

    自己再修改一下
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Menus, cxLookAndFeelPainters, cxButtons, Buttons;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      cx,cy:Integer;
      md:Boolean;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      Form1.DoubleBuffered:=true;
      md:=false;end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      md:=true;
      cx:=x;
      cy:=y;
    end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
     md:=false;
    end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      if md then
      begin
        Form1.Canvas.Rectangle(cx,cy,X,Y);
      end;
    end;end.
      

  4.   

    我有一個笨辦法,不知道對你有沒有用:
    1. 將 Image 屬性 Transparent := True;
    2. 在 Image 裡畫完之後, 就將 Image的Width 和 Height 重置為 Rectangle 一樣大小.這樣畫的部分是透明的, 又沒有其它空白的.
      

  5.   

    别在image上画了,他会带底图颜色的,在form上或panel上画吧