用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c#代码库

diy窗口 自定义不规则窗体和控件 游戏登录界面

2012-10-25 作者: 程序猿style举报

[c#]代码库

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
    /*                  《自定义窗体的创建步骤》:
     *
     *No.1: 位图文件选用*.GIF或*.PNG格式,也就是可以保存“透明背景色”的图片格式。
     *No.2: 将TransparencyKey属性设置为BackColor同样的颜色值。
     *No.3: 将FormBorderStyle属性设置为None。
     *No.4: 添加窗体常用功能:移动,关闭,标题栏等等。
     *
     */
 
 
    /*                  《自定义控件的创建步骤》:
     *
     * 1.创建一个GraphicsPath类的实例对象。
     * 2.指定好该对象的各项细节(如大小、形状等等)。
     * 3.将控件的Region属性设置为上面建立的GraphicsPath类的实例对象。
     *
     */
 
 
    #region 恢复 窗体必要功能の相关代码
 
    private Point mouse_offset; //Point表示在二维平面中定义点的、整数 X 和 Y 坐标的有序对。
 
    /*【Tip】:下面相关事件的代码可以直接使用。
     *
     * 只要在、新建的窗体、的对应事件中选择以下事件代码即可。
     *
     */
 
    private void Form_MouseDown ( object sender , MouseEventArgs e )
    {
        mouse_offset = new Point ( e.X , e.Y ); //将当前鼠标相对于“窗体”左上角的坐标赋值给mouse_offset
    }
 
    private void Form_MouseMove ( object sender , MouseEventArgs e )
    {
 
        if ( e.Button == MouseButtons.Left )
        {
            Point mousePos = Control.MousePosition;         //将鼠标当前的"屏幕"位置坐标,赋值给mousePos变量
 
            mousePos.Offset ( -mouse_offset.X , -mouse_offset.Y ); /* Offset的作用:将当前鼠标的Point 平移指定的量。
                                                                     * 这里“负号”的含义是:
                                                                     * 因为窗体左上角会向下移动到当前鼠标的位置,
                                                                     * 为了使窗体不改变与鼠标的相对位置,而减去原来鼠标相当于窗体左上
                                                                     * 角的位移量。这样就进入“窗体移动”状态。
                                                                     */
            Location = mousePos;
        }
    }
 
 
    private void 关闭_Click ( object sender , EventArgs e )
    {
        this.Close();       //实现窗体的关闭功能
    }
 
 
    #endregion
 
 
 
    private void CustomButton_Paint ( object sender,System.Windows.Forms.PaintEventArgs e )
    {
 
        //初始化一个GraphicsPath类的对象
        System.Drawing.Drawing2D.GraphicsPath myGraphicsPath   = new System.Drawing.Drawing2D.GraphicsPath();
 
 
        ////////////////////////////////////////////
        ////举一个例子:创建一个像文本的按钮控件////
        ////////////////////////////////////////////
 
        //确定一个“字符串”,该字符串就是控件的形状
        string stringText = "Click Me!";
 
        //确定字符串的“字体”
        FontFamily family = new FontFamily ( "Arial" );
 
        //确定字符串的“风格 ”
        int fontStyle = ( int ) FontStyle.Bold;
 
        //确定字符串的“高度 ”
        int emSize = 35;
 
        //确定字符串的“起始位置”,它是从控件开始计算而非窗体
        PointF origin = new PointF ( 0, 0 );
 
        //一个StringFormat对象来确定字符串的字间距以及“对齐方式”
        StringFormat format = new StringFormat ( StringFormat.GenericDefault );
 
        //////////////////////////////////////////
        /////////////// END //////////////////////
        //////////////////////////////////////////
 
 
        //用AddString方法创建字符串
        myGraphicsPath.AddString ( stringText, family, fontStyle, emSize, origin, format );
 
        //将控件的Region属性设置为上面创建的GraphicsPath对象
        CustomButton.Region = new Region ( myGraphicsPath );
 
    }
 
 
 
    public Form1()
    {
        InitializeComponent();
    }
 
 
 
 
 
}
}


网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...