源码网,源码论坛,源码之家,商业源码,游戏源码下载,discuz插件,棋牌源码下载,精品源码论坛

 找回密码
 立即注册
查看: 184|回复: 27

[ASP.NET] 使用重绘项美化WinForm的控件

[复制链接]

7万

主题

861

回帖

32万

积分

论坛元老

Rank: 8Rank: 8

积分
329525
发表于 2017-10-20 08:37:37 | 显示全部楼层 |阅读模式
这篇文章主要为大家详细介绍了如何使用重绘项美化WinForm中控件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

如果你觉得项目中的ComboBox、ListBox或其它的Winforms控件不能满足你的显示要求,包括窗体在内很多控件都支持重绘修改显示样式。下面的示例完成对ComBox数据项的重绘,希望能起到抛砖引玉的作用。

显示源代码

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 SimpleDemo
{
 public partial class frmDrawItem : Form
 {
  public frmDrawItem()
  {
   InitializeComponent();
   //指定绘制模式,这项必须指定为,OwnerDrawFixed,OwnerDrawVariable
   //Normal 由操作系统绘制,并且元素大小都相等。 
   //OwnerDrawFixed 手动绘制的,并且元素大小都相等。 
   //OwnerDrawVariable 手动绘制,元素大小可能不相等。 
   comboBox2.DrawMode = DrawMode.OwnerDrawFixed;
  }

  //重绘项事件
  private void comboBox2_DrawItem(object sender, DrawItemEventArgs e)
  {
   //获取要在其上绘制项的图形表面
   Graphics g = e.Graphics;
   //获取表示所绘制项的边界的矩形
   System.Drawing.Rectangle rect = e.Bounds;
   //定义要绘制到控件中的图标图像
   Image ico = Image.FromFile("head.png");
   //定义字体对象
   System.Drawing.Font font = new System.Drawing.Font(new FontFamily("宋体"), 12);
   if (e.Index >= 0)
   {
    //获得当前Item的文本
    string tempString = comboBox2.Items[e.Index].ToString();
    //如果当前项是没有状态的普通项
    if (e.State == DrawItemState.None)
    {
     //在当前项图形表面上划一个矩形
     g.FillRectangle(new SolidBrush(Color.FromArgb(200, 230, 255)), rect);
     //在当前项图形表面上划上图标
     g.DrawImage(ico, new Point(rect.Left, rect.Top));
     //在当前项图形表面上划上当前Item的文本
     g.DrawString(tempString, font, new SolidBrush(Color.Black), rect.Left + ico.Size.Width, rect.Top);
     //将绘制聚焦框
     e.DrawFocusRectangle();
    }
    else
    {
     e.Graphics.FillRectangle(new SolidBrush(Color.LightBlue), rect);
     g.DrawImage(ico, new Point(rect.Left, rect.Top));
     g.DrawString(tempString, font, new SolidBrush(Color.Black), rect.Left + ico.Size.Width, rect.Top);
     e.DrawFocusRectangle();
    }
   }
  }

 }
}


总结:如果仅仅是美化可以选择使用皮肤控件,但使用重绘更加灵活,可以满足一些功能上的需求。另外不同的控件还有一些不同重绘事件,可以参照MSDN。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

回复

使用道具 举报

0

主题

2万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2022-9-9 12:47:47 | 显示全部楼层
问问问企鹅哇哇哇哇哇
回复 支持 反对

使用道具 举报

3

主题

2万

回帖

163

积分

注册会员

Rank: 2

积分
163
发表于 2022-11-6 15:40:23 | 显示全部楼层
非常vbcbvcvbvcb
TS人妖演出表演服务q3268336102电话13168842816
回复 支持 反对

使用道具 举报

2

主题

2万

回帖

380

积分

中级会员

Rank: 3Rank: 3

积分
380
发表于 2023-5-8 13:20:31 | 显示全部楼层
呵呵呵呵呵呵
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-9-14 10:59:53 | 显示全部楼层
逛逛看看瞧瞧
回复 支持 反对

使用道具 举报

2

主题

2万

回帖

221

积分

中级会员

Rank: 3Rank: 3

积分
221
发表于 2023-10-9 19:59:17 | 显示全部楼层
来看看怎么样
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-10-11 04:28:02 | 显示全部楼层
额UI废物iuhfujewfiewnnfen
回复 支持 反对

使用道具 举报

3

主题

2万

回帖

301

积分

中级会员

Rank: 3Rank: 3

积分
301
发表于 2023-10-14 17:30:36 | 显示全部楼层
终于找到了,我擦
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-11-30 01:11:20 | 显示全部楼层
啦啦啦啦啦德玛西亚
回复 支持 反对

使用道具 举报

11

主题

1万

回帖

103

积分

注册会员

Rank: 2

积分
103
发表于 2024-3-6 03:47:28 | 显示全部楼层
谢谢小Y分享
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|小黑屋|网站地图|源码论坛 ( 海外版 )

GMT+8, 2024-11-23 08:11 , Processed in 0.113758 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表