c# winForm关于重绘控件的形状

我想把一个按钮和窗口右上方的按钮重绘成那个样子,有会能帮忙提供一下相关方法的代码?

第1个回答  2010-04-23
把form的FormBorderStyle设置为None,最小化和关闭按钮拖,都重画吧,详细看下gdi+,类似下面的,改改就ok了.
public void Render(Graphics graphics)
{
Pen pen;
Brush brush;
int x, y;
int textWidth, textHeight;

brush = new SolidBrush(IsSelectedValue ?
CaptionColor : Color.White);
pen = new Pen(Color.Black);

graphics.FillEllipse(brush, PositionLeftX, PositionTopY,
SizeWidth, SizeHeight);
graphics.DrawEllipse(pen, PositionLeftX, PositionTopY,
SizeWidth, SizeHeight);

textWidth = (int)graphics.MeasureString(CaptionName,
CaptionFont).Width;
textHeight = (int)graphics.MeasureString(CaptionName,
CaptionFont).Height;

x = PositionLeftX + (SizeWidth - textWidth) / 2;
y = PositionTopY + (SizeHeight - textHeight) / 2;
graphics.DrawString(CaptionName, CaptionFont,
new SolidBrush(IsSelectedValue ? Color.White : CaptionColor),
x, y);
brush.Dispose();
}本回答被提问者采纳

c# winForm关于重绘控件的形状
把form的FormBorderStyle设置为None,最小化和关闭按钮拖,都重画吧,详细看下gdi+,类似下面的,改改就ok了.public void Render(Graphics graphics){ Pen pen;Brush brush;int x, y;int textWidth, textHeight;brush = new SolidBrush(IsSelectedValue ?CaptionColor : Color.White);pen = new Pen(Col...

c#重绘复选框checkBox的问题
那个框框大小不能改变,但是框框和显示的文字 整体大小是可以调的,改变属性borderwidth值就好了。

C#的Winform程序中,DataGridView控件的单元格里能不能实现划圆圈,或者...
可以的,一种方法是用图片的方式代替,也就是显示一个图片,图片内容是一个圆圈 另一种方式就比较复杂了,得重画单元格

c#gdi+画图 怎样重绘
首先说一下,WinForm里是没有矩形这种东西的,想要达到移动矩形的目的,只有画一个矩形,就是用GDI+,连续在不同位置画矩形,看起来就是矩形在移动。折中的方案就是放一个矩形控件,模拟矩形,但是这样限制会很大,毕竟GDI画出来的你可以随意对他进行操作。using(Graphics g = panel.CreateGraphics()){...

请问C# winform如何实现将一个不规则形状的图片弄成按键?
您可以使用自定义控件来实现这种效果。首先,创建一个继承自System.Windows.Forms.Control的类,然后重写其OnPaint方法来绘制不规则形状的图片。然后,通过在控件上附加鼠标事件处理器,来切换显示图形A和图形B。以下是一个简单的代码示例:using System;using System.Drawing;using System.Windows.Forms;public...

C# 如何设置WinForm窗体样式
(30)Capture属性:如果该属性值为true,则鼠标就会被限定只由此控件响应,不管鼠标是否在此控件的范围内。(1)Show方法该方法的作用是让窗体显示出来,其调用格式为:窗体名.Show();(2)Hide方法该方法的作用是把窗体隐藏出来,其调用格式为:窗体名.Hide();(3)Refresh方法该方法的作用是刷新并重画窗体,其调用格式为:...

C# WinForm 鼠标移动PictureBox控件的问题
LZ你好,出现阴影或闪烁现象是由控件重绘造成的。控件改变自身大小、位置,或者改变显示状态,都会使控件重绘,是否有良好的用户体验是由硬件性能和是否对重绘进行了优化来决定的。优化建议:使用双缓冲技术。即把窗体(Form)的DoubleBuffered的值设为True;双缓冲技术的原理是:先将图像绘制到内存中的一块画布...

C# WINFORM中datagridview控件如何在行标题(-1列)重绘加入checkbox实现...
要在 C# WinForms 的 DataGridView 控件的行标题中添加复选框实现全选功能,您可以使用以下步骤:为 DataGridView 控件添加一个 CellPainting 事件处理程序。可以在设计器中双击 DataGridView 控件,自动生成事件处理程序。在 CellPainting 事件处理程序中,检查 e.ColumnIndex 是否为 -1(行标题列)以及 e...

寻高人!小弟想用C#做一个心形的窗体!
1.建立winform应用程序 2.找到窗体的Load事件,双击进行编辑 3.编写方法,主要的代码如下:代码 classBitmapRegion { publicBitmapRegion(){} \/\/\/ \/\/\/Createandapplytheregiononthesuppliedcontrol \/\/\/创建支持位图区域的控件(目前有button和form)\/\/\/ \/\/\/TheControlobjecttoapplytheregionto控件 \/\/...

C# winform程序 高手进!(CSS党勿进)
这个要用GDI进行重绘,在绘制时,将字符串拆开成4段,然后分别给个坐标和旋转角度进行文字绘制。其实不难。代码不给写了,有问题hi我。

相似回答