怎样根据一幅图片生成不规则的窗体Form?谢谢(100分)

  • 主题发起人 主题发起人 bevy
  • 开始时间 开始时间
B

bevy

Unregistered / Unconfirmed
GUEST, unregistred user!
用汉字做窗体形状是这样:
procedure TForm1.FormCreate(Sender: TObject);
var
rgn:HRGN;
begin
BeginPath(Canvas.Handle);
SetBkMode( Canvas.Handle, TRANSPARENT );
Canvas.Font.Name:= '宋体';
Canvas.Font.Size:=100;
Canvas.TextOut( 20, 20, '漂亮吗?');//用"漂亮吗?"作为form的形状
EndPath(Canvas.Handle);
rgn:= PathToRegion(Canvas.Handle);
SetWindowRgn( Handle, rgn, true );
end;

但是怎么通过图片生成窗体呢?谢谢
 
去下载CoolForm 控件吧,你贴出一堆代码和你问题无关。

http://www.csdn.net/Delphi/vcl/form/coolform.zip
http://www.lawrenz.com/coolform/index.htm
 
就是,有现成的控件呢,

再就是象你上面的哪个程序,如你能够获得哪个镂空的图片的边缘路径,
也可以一样得到相类的窗体。

还是先看看人家的程序如何写的。
 
你那个程序要移动怎么办?
 
将窗体设成全部区域可用鼠标拖动

最简单的办法就是"欺骗"系统,让他认为点中的是窗体的标题行
unit Dragmain;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited; { call the inherited message handler }
if M.Result = htClient then { is the click in the client area? }
M.Result := htCaption; { if so, make Windows think it's }
{ on the caption bar. }
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
end.

{ 下面是这个窗体的设置}



object Form1: TForm1
Left = 203
Top = 94
BorderIcons = []
BorderStyle = bsNone
ClientHeight = 273
ClientWidth = 427
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'System'
Font.Style = []
PixelsPerInch = 96
TextHeight = 16
object Button1: TButton
Left = 160
Top = 104
Width = 89
Height = 33
Caption = 'Close'
TabOrder = 0
OnClick = Button1Click
end
end
 
这里有算法:
<a href="DispQ.asp?LID=213621">怎样生成任意形状的控件?比如根据一幅黑白的掩膜图片。</a>
 
不要用什么控件,用资源
 
bmp2rgn控件
 
多人接受答案了。
 
为什么我看不到别人的回答??
 
后退
顶部