社区
C#
帖子详情
晕在GUI
loverP
2003-12-13 01:13:47
我晕!怎么我在WinXP下用VS.NET中的窗体设计器设计的GUI中的标准按钮(Button控件)都是2000/9x的外观,而不是WinXP中标准按钮的样式(那种圆乎乎的)?
...全文
18
19
打赏
收藏
微信扫一扫
点击复制链接
分享
举报
写回复
19 条
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
loverP
2004-01-06
up
打赏
举报
回复
赞
loverP
2004-01-02
非常感谢 cocosoft(pengyun) 大虾!!
其实我只希望我的程序能像一般的应用程序那样,在2000里有2000的界面,在XP里有XP的界面就行了。
不过我想顺便了解一下,我怎样才能在程序中判断操作系统的版本,并依照不同版本绘制不同的自定义界面呢?
打赏
举报
回复
赞
甴曱
2004-01-01
如果在XP下面,你要在Main过程中添加Application.EnableVisualStyles();
在按钮的属性里面设置FlatStyle为System
如果不在XP下面运行,你的按钮就要求进行重绘才能实现你想要的功能了。具体按钮重绘的代码为:
using System;
using System.Drawing;
using System.Windows;
using System.Windows.Forms;
namespace ControlSet
{
/// <summary>
/// 自绘按钮
/// </summary>
public class MyButton : System.Windows.Forms.Button
{
private bool mouseDown=false;
private bool mouseHover=false;
public MyButton()
{
SetStyle(ControlStyles.UserPaint,true);
MouseDown+=new MouseEventHandler(OnMouseDown);
MouseUp+=new MouseEventHandler(OnMouseUp);
MouseEnter+=new EventHandler(OnMouseEnter);
MouseLeave+=new EventHandler(OnMouseLeave);
Height=23;
Width=75;
}
protected override void OnPaint(PaintEventArgs pe)
{
pe.Graphics.FillRectangle(new SolidBrush(Parent.BackColor),
pe.ClipRectangle);
if (Enabled == false)
{
DrawDisableButton(pe.Graphics);
}
else if (mouseDown)
{
DrawMouseDownButton(pe.Graphics);
}
else if (mouseHover)
{
DrawMouseHoverButton(pe.Graphics);
}
else if (Focused)
{
DrawContainFocusButton(pe.Graphics);
}
else
{
DrawNormalButton(pe.Graphics);
}
WriteText(pe.Graphics);
}
private void OnMouseDown(object sender,MouseEventArgs e)
{
mouseDown=true;
}
private void OnMouseUp(object sender,MouseEventArgs e)
{
mouseDown=false;
PaintEventArgs pe =
new PaintEventArgs(CreateGraphics(),ClientRectangle);
OnPaint(pe);
}
private void OnMouseEnter(object sender,EventArgs e)
{
mouseHover=true;
PaintEventArgs pe =
new PaintEventArgs(CreateGraphics(),ClientRectangle);
OnPaint(pe);
}
private void OnMouseLeave(object sender,EventArgs e)
{
mouseHover=false;
PaintEventArgs pe =
new PaintEventArgs(CreateGraphics(),ClientRectangle);
OnPaint(pe);
}
private void DrawBorder(Graphics g,int state)
{
if (state==1)
{
Pen p = new Pen(SystemColors.ControlLightLight,2);
g.DrawLine(p,1,1,1,Height-2);
g.DrawLine(p,1,1,Width-2,1);
g.DrawLine(p,Width-1,2,Width-1,Height-2);
g.DrawLine(p,2,Height-1,Width-2,Height-1);
}
else if (state==2)
{
Pen p = new Pen(Color.Yellow,2);
g.DrawLine(p,1,1,1,Height-2);
g.DrawLine(p,1,1,Width-2,1);
g.DrawLine(p,Width-1,2,Width-1,Height-2);
g.DrawLine(p,2,Height-1,Width-2,Height-1);
}
else if (state==3)
{
Pen p = new Pen(SystemColors.ControlDark,2);
g.DrawLine(p,1,1,1,Height-2);
g.DrawLine(p,1,1,Width-2,1);
g.DrawLine(p,Width-1,2,Width-1,Height-2);
g.DrawLine(p,2,Height-1,Width-2,Height-1);
}
else if (state==4)
{
Pen p = new Pen(SystemColors.ControlLight,2);
g.DrawLine(p,1,1,1,Height-2);
g.DrawLine(p,1,1,Width-2,1);
g.DrawLine(p,Width-1,2,Width-1,Height-2);
g.DrawLine(p,2,Height-1,Width-2,Height-1);
}
else if (state==5)
{
Pen p = new Pen(Color.SkyBlue,2);
g.DrawLine(p,1,1,1,Height-2);
g.DrawLine(p,1,1,Width-2,1);
g.DrawLine(p,Width-1,2,Width-1,Height-2);
g.DrawLine(p,2,Height-1,Width-2,Height-1);
}
if (state==4)
{
Pen p = new Pen(Color.FromArgb(161,161,146),1);
g.DrawLine(p,0,2,0,Height-3);
g.DrawLine(p,2,0,Width-3,0);
g.DrawLine(p,Width-1,2,Width-1,Height-3);
g.DrawLine(p,2,Height-1,Width-3,Height-1);
g.DrawLine(p,0,2,2,0);
g.DrawLine(p,0,Height-3,2,Height-1);
g.DrawLine(p,Width-3,0,Width-1,2);
g.DrawLine(p,Width-3,Height-1,Width-1,Height-3);
}
else
{
g.DrawLine(Pens.Black,0,2,0,Height-3);
g.DrawLine(Pens.Black,2,0,Width-3,0);
g.DrawLine(Pens.Black,Width-1,2,Width-1,Height-3);
g.DrawLine(Pens.Black,2,Height-1,Width-3,Height-1);
g.DrawLine(Pens.Black,0,2,2,0);
g.DrawLine(Pens.Black,0,Height-3,2,Height-1);
g.DrawLine(Pens.Black,Width-3,0,Width-1,2);
g.DrawLine(Pens.Black,Width-3,Height-1,
Width-1,Height-3);
}
}
private void DrawNormalButton(Graphics g)
{
DrawBorder(g,1);
PaintBack(g,SystemColors.ControlLightLight);
}
private void DrawMouseHoverButton(Graphics g)
{
DrawBorder(g,2);
PaintBack(g,SystemColors.ControlLightLight);
}
private void DrawMouseDownButton(Graphics g)
{
DrawBorder(g,3);
PaintBack(g,SystemColors.ControlLight);
}
private void DrawDisableButton(Graphics g)
{
DrawBorder(g,4);
PaintBack(g,SystemColors.ControlLight);
}
private void DrawContainFocusButton(Graphics g)
{
DrawBorder(g,5);
PaintBack(g,SystemColors.ControlLightLight);
}
private void PaintBack(Graphics g,Color c)
{
g.FillRectangle(new SolidBrush(c),3,3,
Width-6,Height-6);
}
private void WriteText(Graphics g)
{
int x=0,y=0;
Size s = g.MeasureString(Text,Font).ToSize();
x=(Width-s.Width)/2;
y=(Height-s.Height)/2;
if (Enabled)
g.DrawString(Text,Font,Brushes.Black,x,y);
else
g.DrawString(Text,Font,Brushes.Gray,x,y);
}
}
}
打赏
举报
回复
赞
xzguyufeng
2004-01-01
在VS.Net2003中,构造函数调用
Application.EnableVisualStyles () ;
方法,然后将按钮的FlatStyle改为System就可以了.
但如果使用的2002就需要外加一个manifest文件,才能启动XP样式.
打赏
举报
回复
赞
loverP
2004-01-01
up
打赏
举报
回复
赞
loverP
2003-12-28
up
打赏
举报
回复
赞
meixiaofeng
2003-12-26
FlatStyle
打赏
举报
回复
赞
loverP
2003-12-26
是FlatStyle属性么?改成System的了,还是没用~~~~~
能具体讲讲么?还有,怎么给专家分?一定给!!!多谢帮忙!
打赏
举报
回复
赞
loverP
2003-12-26
可我试了试,还是不行呀!会不会是因为我用了D版的WinXP和VS?
打赏
举报
回复
赞
LongBow007
2003-12-25
把你的button的样式改成system的 呵呵 别忘了给点专家分阿
打赏
举报
回复
赞
loverP
2003-12-25
可我的系统没问题呀!我都重装了一遍了~~~~555555555555
打赏
举报
回复
赞
zhoujian2003
2003-12-22
同意核桃
打赏
举报
回复
赞
loverP
2003-12-22
up
打赏
举报
回复
赞
loverP
2003-12-14
能将具体点么?一定要自己实现么?
打赏
举报
回复
赞
erictang2003
2003-12-13
XP 的WINNT 下有一个DLL,调用改变XP外观,而WIN2K/98 没有此DLL.
>>你可以用图标模拟XP风格.
打赏
举报
回复
赞
loverP
2003-12-13
我用的确实是XP呀,按钮也是工具箱里的标准按钮,我想没必要自己绘制吧?
打赏
举报
回复
赞
xamcsdn2
2003-12-13
用资源文件,网上有相关,XP风格的实现的文章的
打赏
举报
回复
赞
wubike
2003-12-13
不会吧,我以前装过XP,运行后都是XP风格的按钮。。
打赏
举报
回复
赞
xueyhfeng
2003-12-13
这个应该是与系统相关的,你编译出来的程序在XP下运行,就是XP的外观,在2K下运行,就是经典样式的外观,
打赏
举报
回复
赞
相关推荐
C++
GUI
源码
C++
GUI
里面的源码,所有的都有!可以
晕
运行的!
java
gui
窗口 传值_[求助]
gui
中传参问题
[求助]
gui
中传参问题mport java.awt.Color;import java.awt.Container;import java.awt.Insets;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextField;...
linux svn
gui
2016,Linux操作系统下的几款svn
gui
工具介绍
),便试用了几款linux下的svn
gui
工具,打算专门用来做branch之间的合并用。目前,试用了如下几种:rapidsvn,kdesvn,esvn。1. rapidsvn本认为rapidsvn是最好用的,但是玩了半天觉得不尽人意。首先,ubuntu的源里面...
GUI
在
Java语言提供的
GUI
构建工具中,可以分为“组件”(component)和“容器”(Container)两类。
在
Java语言中,提供了以下组件: 按钮标签复选框单选按钮选择框列表框文本框滚动条画布菜单 这些组件,我们...
实现C++
GUI
开发图形库
作者:文刀秋二 ...来源:知乎 著作权归作者所有。...我来补充一种比较新颖的
GUI
实现模式,叫做Immediate Mode
GUI
(IM
GUI
)。这种类型的更多的适用于显示区域实时刷新的程序里面,例如游戏和CAD等。IM
GUI
这...
git
gui
提交代码
在
使用 git 管理项目的时候, 本来想完全使用 git
gui
图形界面的,结果发现 git
gui
只能使用一些基本功能。。。其他的一些功能还是需要使用 git bash 敲命令的,,这个和SVN 还真是不太一样的。 参考地址: ...
使用DirectX打造游戏
GUI
界面(一)
本系列文章由zhmxy555(毛星云)编写,转载请注明出处。 文章链接: http://blog.csdn.net/poem_qianmo/article/details/16384009 ...众所周知,
GUI
是游戏中不可缺少的元素,这篇文章中,我们首先
GUI
客户端Task设计
主流的
GUI
库都是采用单线程,不管是Java的还是C++的,Java里的Swing/AWT和JFace/SWT当然都是, 因MVC的盛行,也就是观察者模式,或者说事件通知方式,如果
GUI
设计成多线程,开发人员必须小心翼翼的开发,稍不留神就...
GitHub 新手教程 五,Git
GUI
新手教程(2),Clone Existing Repository 克隆代码库
按照他们的教程,仅仅做到一半,各种错误窗口就开始弹出来了:“非同一代码库”、“代码不同步”等等……,着实让我们新手
晕
头
晕
脑,心里这个盘算啊:为什么人家能成,到咱这儿就不行了呢?! 后来才明白,原来他们...
Linux下的几款svn
gui
工具
),便试用了几款linux下的svn
gui
工具,打算专门用来做branch之间的合并用。目前,试用了如下几种:rapidsvn,kdesvn,esvn。 1. rapidsvn 本认为rapidsvn是最好用的,但是玩了半天觉得不尽人意。首先,ubuntu...
Unity3d 之 内置图形界面系统Unity
GUI
1、unity内置的ui系统,无论是
在
性能的表现上、功能的强大性上、制作复杂ui的便捷性上,还是其它的一些方面都不如一些第三方的插件来的好,如:N
GUI
和DF-
GUI
(PS: 后者比前者要好很哦,推荐!))。 2、虽然Unity
GUI
...
激光导引星倾斜探测的非等
晕
性
随着激光带拖影长度的增加,必然导致其出现非等
晕
现象。给出了激光导引星带状拖影上两球面波之间的Zernike多项式展开系数角度相关函数。从相关性的角度分析了导引星高度、大气湍流强度以及接收望远镜口径对激光导引...
激光导引星非等
晕
性的限制
在
利用激光导引星的自适应光学系统中,焦距非等
晕
性是对自适应光学系统性能的主要限制,利用湍流探测配置的孔径滤波函数导出了剩余波前畸变方差.并依此导出了成像系统的有效直径d0,根据昆明和兴隆实测的大气湍流模型对...
Unity
GUI
(u
GUI
)使用心得与性能总结
本文转自:https://www.jianshu.com/p/061e67308e5f背景和目的小哈接触Unity3D也有一段时间了,项目组
在
UI解决方案的选型一直是用的原生的u
GUI
,因此本人也是使用了一段时间的u
GUI
,
在
u
GUI
的使用方面积累了一些自己...
CentOS 7
在
迷你系统上安装Gnome
GUI
图形界面
今天换了台新电脑了,晚上就开始
在
虚拟机vmware安装CentOS 7系统。兴奋一下,开始了,各项设置都设备好了。...
晕
,又不想重新安装,直接想从命令行模式安装。
在
网上找了半天,终于找到一点小提示,分享一下:...
ERP沙盘模拟实践实验报告.docx
ERP沙盘模拟实践实验报告
算法分析与设计实验报告-求最大子段和实验报告(含源代码).doc
算法分析与设计实验报告-求最大子段和实验报告(含源代码).doc
Awesome_Game_UI_Pack_Button_Pack_and_Icon_pack_16_v1.0
Awesome_Game_UI_Pack_Button_Pack_and_Icon_pack_16_v1.0
某公司ERP生产管理系统实验报告.docx
某公司ERP生产管理系统实验报告
算法分析与设计之引言.pps
算法分析与设计之引言.pps
发帖
C#
加入
微信扫一扫
点击复制链接
10.7w+
社区成员
64.2w+
社区内容
.NET技术 C#
社区管理员
申请成为版主
帖子事件
创建了帖子
2003-12-13 01:13
社区公告
让您成为最强悍的C#开发者