如题,在Delphi中该如何使用图片来做窗口的形状呢,最好就是可以支持 Gif 或是 png等透明格式的图片,因bmp图片再去掉指定颜色的话,边缘会不圆滑。请问一下应该怎么做,或是有什么第三方控件可以直接指定透明格式图片做为窗口形状的,谢谢

解决方案 »

  1.   

    http://rabbitfox.blog.sohu.com/33269246.html
      

  2.   

    这个就算加上下面的代码,也是需要去掉一些颜色来显示,这样边缘不光滑,不好意思,不是要这样的,
    我是想要用一个透明图片来做窗口的形状,然后上面再放些按钮或是edit什么的
      

  3.   

    试过了,要去掉的地方,做成一种颜色,然后再去掉这种颜色来显示图片,但是无论图片的边缘或是过度做得多好,去掉颜色之后还是会有残留颜色,形成锯齿,所以我才想看一下有没有其它第三方控件,直接支持让
    PNG或是GIF等透明的图片格式来做成窗口的形状,这样就应该不会有锯齿出现的!也就是说,透明图片做成什么样,Form就可以较完美的只显示出此图片的形状,,,并能在上面添加其它控件,可拖动
      

  4.   

    BMP 的话好办,
    PNG 可以看看 Raize 最新版有没有支持到。
    它有个现成的控件干这事。
      

  5.   

    Raize 我最新的试过5.5 了 RzFormShape  ,还是只能处理,真不明白它,Raize  ,既然png的不支持透明的,那和bmp有何区别,还要弄两个格式,晕死了,靠去掉颜色来显示形状的,我相信,真正做出来用的程序,没有人会这么做的
      

  6.   

    可以用gdi画png啊,窗体本身设置成透明的就可以。
      

  7.   

    procedure TForm1.GDIDrawPngUseRect(sPngFile: string);
    var GPGraph: TGPGraphics;
        GPImage: TGPImage;
        GPRect: TGPRect;
    begin
      GPGraph := TGPGraphics.Create(Canvas.Handle);
      GPImage := TGPImage.Create(sPngFile);
      try
        GPRect.X := 0;
        GPRect.Y := 0;
        GPRect.Width := GPImage.GetWidth;
        GPRect.Height := GPIMage.GetHeight;
        Width := GPImage.GetWidth;
        Height := GPIMage.GetHeight;
        GPGraph.DrawImage(GPImage,GPRect);
      finally
        GPImage.Free;
        GPGraph.Free;
      end;
    end;     画png图片的例子。