有一个窗体,窗体里面有个TCheckGroup控件,我在点击一个选项时,希望能够显示一张透明的图片盖在TCheckGroup的上方;现在我有一个透明画图的算法,可是我执行的时候,图片老是画在窗体里面,TCheckGroup又没有Canvas属性,不知道该如何作?情知教。

解决方案 »

  1.   

    你把图片画在另外一个窗体里,例如form2,把这个窗体设置未置顶窗体,并且None,什么也不没有,就可以了。
      

  2.   

    谢谢,wudi_1982(︻┳═一),这种方法可行,屏蔽关闭即可。
    但是我就是不明白,为什么绘画在其他控件的后面,而不是前面。
      

  3.   

    会。。不过你在ONKEdown中判断,如果是ALT+F4就屏蔽掉。procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);
    begin
    if (ssAlt in shift)and(key=115) then key:=0;
    end;
      

  4.   

    是这样的,TCheckGroup中有个CheckButton按钮,我点击后,要显示一张图片浮在上面,持续2秒钟的时间;可是现在TCheckGroup上面并没有图片盖住,图片而是画在窗体里面,就像背景图一样。
    这是我的代码:
    procedure TWordGraspTest.OnOptionClick(Sender: TObject; Index: Integer;
      NewState: TCheckBoxState); 
    var
      Bitmap: TBitmap;
      X, Y: Integer;
      ImageDir: string;
      ImgFace: TImage;
    begin
      ImageDir := ExtractFilePath(Application.ExeName) + 'Skin\Section\';
      Bitmap := TBitmap.Create;
      try
        Bitmap.LoadFromFile(ImageDir + 'face' + IntToStr(AFace) + '.bmp');
        X := (RzBackground1.Width - Bitmap.Width) div 2;
        Y := (RzBackground1.Height - Bitmap.Height) div 2;
        DrawTBitmap(Self.Canvas.Handle, Bitmap, X, Y, clWhite); //透明绘图算法,这里就不贴出来了,我用的是窗体的DC;
      finally
        Bitmap.Free;
      end;
    end;
      

  5.   

    这是一定的,你是在Self.Canvas.Handle上画图,也就是说,你在画布上画的,而画布在窗体上,所以你画的内容也就显示在窗体上了,就是背景图。