C#特殊窗体制作:制作任意形状窗体

原理:重写当前窗体 OnPaint 方法

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace SpecialSharpWindows
{
  public partial class Form1 : Form
  {
    Bitmap bit;
    public Form1()
    {
      InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
      bit = new Bitmap("heart.bmp");
      bit.MakeTransparent(Color.Blue);
    }
    protected override void OnPaint(PaintEventArgs e)
    {
      e.Graphics.DrawImage((Image)bit, new Point(0, 0));
    }
    private void label1_Click(object sender, EventArgs e)
    {
      this.Close();
    }
  }
}

附界面设计:

#region Windows 窗体设计器生成的代码

/// <summary>
    /// 设计器支持所需的方法 - 不要
    /// 使用代码编辑器修改此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
      this.label1 = new System.Windows.Forms.Label();
      this.SuspendLayout();
      //
      // label1
      //
      this.label1.BackColor = System.Drawing.Color.Transparent;
      this.label1.Location = new System.Drawing.Point(280, 42);
      this.label1.Name = "label1";
      this.label1.Size = new System.Drawing.Size(17, 16);
      this.label1.TabIndex = 0;
      this.label1.Click += new System.EventHandler(this.label1_Click);
      //
      // Form1
      //
      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
      this.BackColor = System.Drawing.SystemColors.Control;
      this.ClientSize = new System.Drawing.Size(393, 317);
      this.Controls.Add(this.label1);
      this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
      this.Name = "Form1";
      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
      this.Text = "字型窗体";
      this.TransparencyKey = System.Drawing.SystemColors.Control;
      this.Load += new System.EventHandler(this.Form1_Load);
      this.ResumeLayout(false);
    }
    #endregion

文章来源: http://www.cnblogs.com/ziyiFly/archive/2008/09/11/1288849.html

时间: 2025-01-06 16:58:36

C#特殊窗体制作:制作任意形状窗体的相关文章

c#代码-c#中窗体,制作视频播放器的菜单(listview)

问题描述 c#中窗体,制作视频播放器的菜单(listview) 怎么讲其中的值获得,在数据库中存了地址,怎么将它与菜单中的名字结合起来!!急!!!!穷人请原谅!!求大神相助!!! 解决方案 C#视频播放器实现右键菜单 解决方案二: 每个menustripitem 有一个tag属性你产生菜单,把地址放在这个tag属性里面.点击的时候同过 ((menustripitem)sender).tag.tostring() 获取

[初学求助]制作完的windows窗体应用程序如何导出exe文件?

问题描述 [求助]制作完的windows窗体应用程序如何导出exe文件?变成能够单独运行的小程序?vs2010谢谢!在线等. 解决方案 解决方案二:你说的意思是自己运行你编写的windows窗体应用程序吧操作:点击生成-->配置管理器-->活动解决方案配置下拉菜单中选择release-->生成-->VS2010的输出窗口会有生成成功的提示这时会在项目的目录下有个binrelease目录里就生成一个EXE文件了.可直接使用

win2000下C#制作的应用程序窗体变形

问题描述 我现在用C#作了一个圆角矩形窗体.使用VS2005开发的.在XP环境下该窗体显示正常.但是在Windows2000环境下窗体下边缘显示不完全.并且窗体的圆角边缘依然是矩形.小弟代码如下:GraphicsPathgp=CaculateRegion(regionBitMap);//这个是自己编写的一个计算窗体Region的方法,该方法用一个BMP格式的Image对象作为参数gp.AddRectangle(newRectangle(2,23,500,334));this.Region=new

C# 制作出任意不规则按钮

按钮 C# 制作出任意不规则按钮! (原理根据背景图绘制button) using System.Drawing.Drawing2D;private void button3_Paint(object sender, System.Windows.Forms.PaintEventArgs e)  { this.button3.Cursor = Cursors.Hand;         Bitmap bmpBob =(Bitmap)this.button3.Image;            G

用Photoshop制作文字和形状的外轮廓教程

  用Photoshop制作文字和形状的外轮廓,教程很不错,推荐到脚本之家,喜欢的朋友一起来学习吧! 工具/原料 Photoshop 方法/步骤 打开Photoshop,新建文件.如图数值自定 选定文字工具,输入文字或画个图形,在此我以文字为例,图形操作方法一样. 调取文字的选区,按住Ctrl键左击文字图层,调出选区 然后在选区调出的状态下,选择-修改-扩展. 扩展选区以后的图 如图, 新建一个图层,是新建的图层位于文字图层下方. 然后Ctrl+del或者Alt+del填充颜色. 注意事项 扩展

java 窗体打开文件-java在窗体里面打开任意文件

问题描述 java在窗体里面打开任意文件 在做毕业设计,我用的是非常落伍的applet,不知道怎么在一个JFrame窗体里面打开任意的文件, package day.two.show.card; import java.awt.FileDialog; import java.awt.Frame; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.event.Action

Photoshop利用图层样式制作制作立体感后期处理教程

给各位Photoshop软件的使用者们来详细的解析分享一下利用图层样式制作制作立体感的后期处理教程. 教程分享: 效果:   原图:   素材链接:http://pan.baidu.com/s/1jHrFjTW 密码:793k 然后给白色圆形添加描边和内阴影等.....     然后复制图层样式到那几个圆形里面,   接下来对那个五角星下手 添加内阴影   添加外发光   然后把这几个形状编组,对这组添加效果 斜面和浮雕+投影(为了看起来更立体) 斜面和浮雕   投影   把最底下那个 红圆形

MDI窗体程序中防止子窗体被多次实例化——Singleton的C#实现

程序 晚上逛CSDN论坛的时候,看到C#区有位朋友问"防止MDI子窗体被多次实例化",我随即写了这篇文章. 其实这个问题,就是经典的23种设计模式中的单件模式(Singleton),下面用C#实现之: 首先我们有2个Windows Form,主窗体叫Form1,子窗体叫ChildForm.在主窗体中加入一Menu,用来实例化子窗体,我们在Form1.cs中写入下代码: private static ChildForm childForm; //静态变量,保存唯一实例 private v

窗体中控件自动随窗体变化大小

控件 在开发中,往往开发人员需要控制控件大小适应窗口的大小,使得软件在不同的分辨率下也显得比例协调.那么,怎么才能让窗体中控件自动随窗体变化大小呢? 我觉得有一种原始方法很有用,不让窗体可以最大化:比如飞天餐饮软件....... 当然这种方法是绕道而行.开发出来的软件肯定好看不了.好了,让我们来引出下面这个很有用,比较专业的Model吧.--------------------------------------------------------------------------------