问题: 我想利用GDI+生成一幅非正方形的PNG图片,要求图片本身是一个半透明的。当然在图片边角地方是透明的,比如一个球形图片,图片看一上去是一个透明的球形。请GDI++高手们出山啦!!!!

解决方案 »

  1.   

    delphi实现的png半透明闪现窗口很完美你找一个这个源码,很简单实现你的要求,只要换成你的图片就行了
      

  2.   

    有例子吗? 我就是想生成一张半透明的PNG图片,这张图片可以用在别的地方,如IE上和其它程序的调用。
      

  3.   


    uses
      GDIPAPI,
      GDIPOBJ,
      GDIPUTIL;procedure TForm1.Button1Click(Sender: TObject);
    var
      g: TGPGraphics;
      img: TGPBitmap;
      Brush: TGPSolidBrush;
      Clsid: TGUID;
    begin
      img := TGPBitmap.Create(200, 200, PixelFormat32bppARGB);
      g := TGPGraphics.Create(img);
      Brush := TGPSolidBrush.Create(MakeColor(255, 255, 0, 0));
      try
        g.FillEllipse(Brush, 0, 0, 100, 60);
        if GetEncoderClsid('image/png', Clsid) <> -1 then
          img.Save('c:\test.png', Clsid);
      finally
        g.Free;
        img.Free;
        Brush.Free;
      end;end;
      

  4.   

    感谢饭桶超傻人的回复,
    我试了,这个确实能生成PNG图片, 但如何能使这个图片变为半透明的呢?
      

  5.   

    在画的时候把画刷设为半透明就可以了,建议参考阿发伯的BLOG,他里面对GDI+的介绍非常经典。
      

  6.   

    麻烦再给一个 阿发伯的BLOG 的地址,谢谢.
      

  7.   

    已经搞定问题,多谢大家的参与,请到以下贴子领分,由于我只有开100分的权限,因此本贴中的100分全给5楼的 xzhifei(饭桶超傻人℡);
    其它参与解决问题的兄弟们请到以下帖子接分:
    http://topic.csdn.net/u/20091129/22/77053771-2643-417b-8bcf-d49e5b93943d.html再次感谢!!!
      

  8.   

    img := TGPBitmap.Create(200, 200, PixelFormat32bppARGB);这句可以改为img := TGPBitmap.Create(200, 200);吧?多传一个参数有什么好处?
      

  9.   

    PixelFormat32bppARGB  32位位图,每一位共分为 A,R,G,B 四个颜色值,其中A 是Alpha通道。呵呵,有些问题对于高手来讲确实简单,但对于新手来讲却是十分困难。