我在微软中国社区看到了一篇文章:《使用Visual C#制作可伸缩个性化窗体》
按照教学步骤基本上可以实现一个自定义窗体,可是有一个问题我不能解决,不理解,
来此请各路编程高手指点迷津,谢谢!
1.在手动重画窗体标题栏时,我用了如下代码画了标题栏左角:
private void DrawTop_Left(Graphics e)
{
Brush brush = new TextureBrush(topRight, new Rectangle(0, 0, topRight.Width, topRight.Height));
e.FillRectangle(brush, 0, 0, topRight.Width, topRight.Height);
}
画出了如下窗口:(图1)
2.我用同一张图片来手动重画窗体标题栏的右角,代码如下:
private void DrawTop_Right(Graphics e)
{
Brush brush = new TextureBrush(topRight, new Rectangle(0, 0, topRight.Width, topRight.Height));
e.FillRectangle(brush,this.Width-topRight.Width,0, topRight.Width,topRight.Height);
}
画出了如下窗口:(图2)
我用来做为纹理的源图片是:
问题就在这里,为什么上面(图2)会变的那么乱呢?是什么原因引起的呢?我要如何解决这个问题?
(这张图片的目的是放在窗体的右上角,要用来放置系统按钮的,比如关闭按钮,最大化按钮等)
呵呵,在这又看到你的问题了,是不是在编程论坛问过的?
我在那边已经给你回复过了。使用DrawImage方法。
TextureBrush Txbrus = new TextureBrush(Your Image,WrapMode.Clamp);
Txbrus.TranslateTransform(this.X,this.Y)
e.Graphics.FillEllipse(Txbrus, this.ClientRectangle);
主要是TranslateTransform、WrapMode.Clamp