【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 字型窗体
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        [System.Runtime.InteropServices.DllImport("gdi32")]
        private static extern IntPtr CreateFont(int H, int W, int E, int O, int FW, int I, int u, int S, int C, int OP, int CP, int Q, int PAF, string F);
        [System.Runtime.InteropServices.DllImport("user32")]
        private static extern IntPtr GetDC(IntPtr hwnd);
        [System.Runtime.InteropServices.DllImport("gdi32")]
        private static extern IntPtr BeginPath(IntPtr hdc);
        [System.Runtime.InteropServices.DllImport("gdi32")]
        private static extern IntPtr EndPath(IntPtr hdc);
        [System.Runtime.InteropServices.DllImport("gdi32")]
        private static extern IntPtr PathToRegion(IntPtr hdc);
        [System.Runtime.InteropServices.DllImport("gdi32")]
        private static extern int SetBkMode(IntPtr hdc, int nBkMode);
        [System.Runtime.InteropServices.DllImport("gdi32")]
        private static extern IntPtr SelectObject(IntPtr hdc, IntPtr hObject);
        [System.Runtime.InteropServices.DllImport("gdi32")]
        private static extern int TextOut(IntPtr hdc, int x, int y, string lpString, int nCount);

        [System.Runtime.InteropServices.DllImport("user32")]
        private static extern IntPtr SetWindowRgn(IntPtr hwnd, IntPtr hRgn, bool bRedraw);

        const int FW_HEAVY = 900;
        const int ANSI_CHARSET = 0;
        const int OUT_DEFAULT_PRECIS = 0;
        const int CLIP_DEFAULT_PRECIS = 0;
        const int DEFAULT_QUALITY = 0;
        const int DEFAULT_PITCH = 0;
        const int FF_SWISS = 32;
        const int TRANSPARENT = 1;

        private void Form1_Load(object sender, EventArgs e)
        {
            IntPtr dc = GetDC(this.Handle);
            IntPtr m_Font = CreateFont(200, 100, 0, 0, FW_HEAVY, 1, 0,
                       0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,
                       CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
                       DEFAULT_PITCH | FF_SWISS, "宋体");
            //创建字体
            BeginPath(dc);
            //开始记录窗体轮廓路径
            SetBkMode(dc, TRANSPARENT);
            //设置背景为透明模式,这是必须有的
            IntPtr m_OldFont = SelectObject(dc, m_Font);
            TextOut(dc, 0, 0, "C#", 2);
            SelectObject(dc, m_OldFont);
            EndPath(dc);
            //结束记录窗体轮廓路径
            IntPtr m_wndRgn = PathToRegion(dc);
            //把所记录的路径转化为窗体轮廓句柄
            SetWindowRgn(this.Handle, m_wndRgn, true);
            //赋予窗体指定的轮廓形状
            this.BackColor = Color.Red;
            //设置窗体的背景颜色

        }
    }
}

源码下载:http://download.csdn.net/source/3001748

posted @ 2011-01-25 14:36  isaced  阅读(583)  评论(1编辑  收藏  举报