当前位置:编程学习 > C#/ASP.NET >>

C# GDI+ 自绘按钮的问题

本人新手,学习C#中,最近搞的GDI+,自绘了一个按钮,如图:

重画是没问题了,我就是想让它的四个角平滑,这个是纯矩形,太生硬了,有高人能指点一下吗?万分感谢。


另外还想了解一下淡入淡出的实现方法,如果有这方面的资料或例程请告诉小弟或给小弟一份!!谢谢
追问:有C#的实例嘛...如怎么操作那个API返回的句柄。

答案:http://wenwen.zzzyk.com/z/q258134892.htm

这是我上次回答的淡入淡出楼主可以参见一下

 

使用CreateRoundRectRgn 来设置需要创建的圆角矩形大小和圆角半径

SetWindowRgn 用此函数来接收CreateRoundRectRgn的返回值

在窗体初始化的时候敲入代码即可

在重画中给按钮上色

 

在按钮被加载的时候给按钮设置外观

    invoke CreateRoundRectRgn,0,0,100,200,10,10  ;它将返回一个值假设为eax
    invoke SetWindowRgn,hWnd,eax,TRUE 

由于不会C# 使用了masm来敲了一小段代码

 

以下是Api的介绍

CreateRoundRectRgn
VB声明
Declare Function CreateRoundRectRgn Lib "gdi32" Alias "CreateRoundRectRgn" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
说明
创建一个圆角矩形,该矩形由X1,Y1-X2,Y2确定,并由X3,Y3确定的椭圆描述圆角弧度
返回值
Long,执行成功则为区域句柄,失败则为0
参数表
参数类型及说明
X1,Y1Long,矩形左上角的X,Y坐标
X2,Y2Long,矩形右下角的X,Y坐标
X3Long,圆角椭圆的宽。其范围从0(没有圆角)到矩形宽(全圆)
Y3Long,圆角椭圆的高。其范围从0(没有圆角)到矩形高(全圆)
注解

不用时一定要用DeleteObject函数删除该区域
用该函数创建的区域与用RoundRect API函数画的圆角矩形不完全相同,因为本矩形的右边和下边不包括在区域之内

   
SetWindowRgn
VB声明
Declare Function SetWindowRgn Lib "user32" Alias "SetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
说明
本函数允许您改变窗口的区域。
通常所有窗口都是矩形的——窗口一旦存在就含有一个矩形区域。本函数允许您放弃该区域。这意味着您可以创建圆的、星形的窗口,也可以将它分为两个或许多部分——实际上可以是任何形状
返回值
Long,执行成功为非零值,失败为0
参数表
参数类型及说明
hWndLong,将设置其区域的窗口
hRgnLong,将设置的区域的句柄,一旦设置了该区域,就不能使用或修改该区域句柄,也不要删除它
bRedrawBoolean,若为TRUE,则立即重画窗口
注解

为区域指定的所有坐标都以窗口坐标(不是客户坐标)表示,它们以整个窗口(包括标题栏和边框)的左上角为起点

上一个:求高手给个C#的学习经验
下一个:C#中数字转换成中文的程序

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,