创建不规则窗体(100分)

  • 主题发起人 主题发起人 pyc2001
  • 开始时间 开始时间
P

pyc2001

Unregistered / Unconfirmed
GUEST, unregistred user!
我想创建一个五边型的窗口,应该什么做。
 
procedure TForm1.Button1Click(Sender: TObject); <br>var <br>r1,r2,r3,r4,r5: hrgn; <br>begin <br> r1 := createellipticrgn(0,0,round(clientwidth / 2),clientheight); <br> r2 := createellipticrgn(round(clientwidth / 2),0,clientwidth,clientheight); <br> r3 := createellipticrgn(round(clientwidth / 4 ),round(clientheight / 4 *3),round(clientwidth / 4 *3),clientheight); <br> r4 := createrectrgn(0,0,0,0); <br> r5 := createrectrgn(0,0,0,0); <br> combinergn(r4,r2,r1,rgn_or); <br> combinergn(r5,r4,r3,rgn_or); <br><br> setwindowrgn(handle,r5,true); <br> deleteobject(r1); <br> deleteobject(r2); <br> deleteobject(r3); <br> deleteobject(r4); <br> deleteobject(r5); <br>end; <br><br>你照着我的一个例子来试试,窗体宽260,高270.实现类似于橢圓的窗口,还有边线. <br>procedure TFrmAbout.FormCreate(Sender: TObject); <br>var hr:THandle; <br>begin <br> hr:=CreateRoundRectRgn(0,21,Width,Height,80,80); &nbsp;//定義橢圓窗口 <br> SetWindowRgn(handle,hr,true); <br>end; <br><br>procedure TFrmAbout.DrawFormLine; <br>var <br> dc : hDc; <br> Pen : hPen; <br> OldPen : hPen; <br> OldBrush : hBrush; <br>begin <br> dc := GetWindowDC(Handle); <br> Pen := CreatePen(PS_SOLID, 8, RGB(0, 0, 255)); <br> OldPen := SelectObject(dc, Pen); <br> OldBrush := SelectObject(dc, GetStockObject(NULL_BRUSH)); <br> Self.Refresh; <br> RoundRect(dc,0,21,Width,Height,80,80); &nbsp;//&copy;w&cedil;q&frac34;ò&para;ê&micro;&iexcl;¤f <br> SelectObject(dc, OldBrush); <br> SelectObject(dc, OldPen); <br> DeleteObject(Pen); <br> ReleaseDC(Handle, Canvas.Handle); <br>end; <br><br>procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPAINT; <br>procedure TFrmAbout.WMNCPaint(var Msg: TWMNCPaint); <br>begin <br> DrawFormLine; <br>end;
 
你可以先在form上画个五角形,然后把不需要的部分加上颜色,<br>然后在设置那些部分透明,<br>然后你会做透明窗体的效果的画,你就会做了,<br>道理一样
 
例如<br>在form1上添加一个image1组件,并且将其属性align设置为alclient,<br>在image1的picture属性上选择一张图片(图片为一个实心的白色五角形,其他为地方为黑色)<br>将form1的transparentcolor属性设置为true, transparentcolorvalue属性设置为clback<br>(因为上面图片的其他地方为黑色的原因),再将form1的BorderStyle属性改为bsNone<br>运行,OK,一个形状和你图片画的哪个形状一个的窗体出来了,<br>不过,这个窗体没有最小,最大化,和关闭功能,你自己可以添加几个按钮写出来,语句好简单,另外也可以写上移动窗体的事件,
 
用panel创建一个五边型的panel控件,应该什么做。
 
接受答案了.
 
后退
顶部