DrawString绘制文本时出现残缺

l4angel l4angel 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
学着用VS2005做一个简单的图片按钮控件~
在绘制文字时文字底部出现残缺现象、图片切换时出现抖动~
代码如下,请高人赐教!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

using System.Reflection;
using System.Resources;

namespace iWindowsControl
{
public partial class iWButton : UserControl
{
ResourceManager rm = new ResourceManager("iWindowsControl.Properties.Resources", typeof(Properties.Resources).Assembly);
Graphics DefaultGrp;

public iWButton()
{
InitializeComponent();
}

private string Text = "按钮";
[
Category("外观"),
Description("用于显示按钮上的文字.")
]

public string btnText
{
get
{
return Text;
}
set
{
Text = value;
Invalidate();
}
}

private void SetCaption(int x, int y, Graphics Grp)
{
StringFormat format = new StringFormat();
if (this.RightToLeft == RightToLeft.Yes)
{
format.FormatFlags |= StringFormatFlags.DirectionRightToLeft;
}
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;

Font drawFont = new Font("宋体", 9);
SolidBrush drawBrush = new SolidBrush(Color.White);

Rectangle rectangle = new Rectangle(x, y, 92, 30);
Grp.DrawString(this.Text, drawFont, drawBrush, rectangle, format);
Grp.Dispose();
}

private void SetImage(int x, int y, Graphics Grp,string ImgName)
{
Image myPNG = (Image)rm.GetObject(ImgName);
Grp.Clear(this.BackColor);
Grp.DrawImage(myPNG, x, y, 92, 30);
SetCaption(x, y, Grp);
Grp.Dispose();
}

private void iWButton_Load(object sender, EventArgs e)
{
DefaultGrp = this.CreateGraphics();
SetImage(1, 1, DefaultGrp, "btnImg01");
}

private void iWButton_Paint(object sender, PaintEventArgs e)
{
DefaultGrp = e.Graphics;
SetImage(1, 1, DefaultGrp, "btnImg01");
}

private void iWButton_MouseEnter(object sender, EventArgs e)
{
DefaultGrp = this.CreateGraphics();
SetImage(1, 1, DefaultGrp, "btnImg02");
}

private void iWButton_MouseLeave(object sender, EventArgs e)
{
DefaultGrp = this.CreateGraphics();
SetImage(1, 1, DefaultGrp, "btnImg01");
}

private void iWButton_MouseDown(object sender, MouseEventArgs e)
{
DefaultGrp = this.CreateGraphics();
SetImage(2, 2, DefaultGrp, "btnImg02");
}

private void iWButton_MouseUp(object sender, MouseEventArgs e)
{
DefaultGrp = this.CreateGraphics();
SetImage(1, 1, DefaultGrp, "btnImg02");
}
}
}
...全文
评论 1
收藏 已收藏
分享
返回顶部
l4angel
图表区 4,818 成员 14,133 内容