我想找一个图形按钮的VCL控件,可以显示图片,并能透明,在有焦点的时候不透明,而且可以设置形状
我找了1stClass中的fcShapeBtn,但它不透明,大家帮一下吧

解决方案 »

  1.   

    自己试着写一个,我这里有各为button设置背景图片的代码,给你参考一下
    Procedure TForm1.MyBtnWndProc( Var msg : TMessage );
    Var hdcBtn : HDC;
        btnCanvas : TCanvas;
        pic : TBitmap;
        bmp : TBitmap;
    Begin
      OldBtnProc( msg );
      If (msg.Msg = BM_SETSTATE) Or (msg.Msg = WM_PAINT) Then
      Begin
        hdcBtn := GetDC( Button1.Handle );
        btnCanvas := TCanvas.Create;
        pic := TBitmap.Create;
        bmp := TBitmap.Create;
        bmp.Width := Button1.Width;
        bmp.Height := Button1.Height;
        Try
          btnCanvas.Handle := hdcBtn;
          BitBlt( bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, btnCanvas.Handle, 0, 0, SRCCOPY );
          bmp.TransparentColor := GetSysColor(COLOR_BTNFACE);
          bmp.Transparent := True;
          pic.LoadFromFile( 'c:\win95\sandstone.bmp' );
          btnCanvas.Draw(0,0, pic );
          btnCanvas.Draw(0,0,bmp );
        Finally
          bmp.Free;
          pic.Free;
          btnCanvas.Free;
          ReleaseDC( Button1.Handle, hdcBtn );
        End;
      End;
    End;
      

  2.   

    你所说得透明是不是指Alpha混合?估计这个还是比较难实现的,尤其是在非纯色的背景上。
    你可以试着把一个TWinControl通过API设置成半透明的。
      

  3.   

    你在SPEEDBUTTON下继承,然后自己写
    网上应该也能收到