请教如何通过一张黑白位图来确定窗口的外形?

解决方案 »

  1.   

    看看这个里面,我的回复。
    http://expert.csdn.net/Expert/topic/1226/1226688.xml?temp=.3816645我的回复里是对一个Panel的操作,你把Panel 换成Form就可以了。
      

  2.   

    to zwjchina(蒲石):
        我看了你的代码,你的意思创建很多个RectRegion,然后进行合并,对吗? 那要是位图的边线很复杂,岂不是太麻烦?   还有,如果要有用户来指定位图呢?(换肤功能)
      

  3.   

    当然你也可以不使用逐行的区域合并,这种方法效率不高。
    但是你还是要找个相应的取图形的算法,使用CreatePolygonRgn
    来创建区域.
      

  4.   

    谢谢zwjchina(蒲石) ,我先试一下。
      

  5.   

    to w_tiger(老虎) :能仔细说明一下吗? 什么叫掩膜方式?
      

  6.   

    参考一下这个的运行结果procedure TForm1.Button3Click(Sender: TObject);
    var Rgn:HRgn;
    begin
      BeginPath(Canvas.Handle);
      SetBkMode(Canvas.Handle,TRANSPARENT);
      Canvas.Font.Name:= '宋体';
      Canvas.Font.Size:=100;
      Canvas.TextOut(20,20,'窗口');
      Canvas.Font.Name:= '隶书';
      Canvas.Font.Size:=20;
      Canvas.TextOut(150,150,'文字窗体');
      EndPath(Canvas.Handle);
      Rgn:=PathToRegion(Canvas.Handle);
      Color:=clRed;
      SetWindowRgn(Handle,Rgn,true);
    end;
      

  7.   


    以黑白颜色表示图形,黑的颜色是000000,白的是FFFFFF,这种图片就可以成为掩膜图片,而且一般掩膜图片都是运算生成的,也有预先制作的,如望远镜看到的视窗效果的掩膜就是预先做好的。掩膜的用处就是处理前景与背景图片不规则镶嵌的。
    掩膜细分为前景掩膜和背景掩膜
    前景掩膜与前景,背景掩膜与背景,然后两个掩膜合成图再或,则生成完整无缝拼接的图形,实现较好的镂空效果,且不闪烁。
      

  8.   

    非常感谢 w_tiger(老虎) .高手啊!
      

  9.   

    to  w_tiger(老虎) :     但好像不能使用位图啊。