返回首页

{A}
{A2}特别感谢
我知道这是不常见到这样做,但我想本文开始到每一个最有价值球员特别感谢我们亲爱的CP尤其是我们的宝贵Navaneeth ..
你不觉得我们应该像MVP的东西一个月??不管怎么说,回款。简介
你喜欢的商业应用程序的设计和不断想怎么来的我们的应用程序看起来如此沉闷??好了,不要担心,因为这不是你作为一个软件开发人员的工作,通常情况下,它是一个专业的软件设计师,处理用户界面的外观和感觉的一个更大的企业应用程序的工作。
在这篇文章中,您将学习一个简单的技术为您的应用程序使您能够构建交互式按钮,可以改变它们的外观,只要鼠标光标是对他们的传球和再次变回的方式,他们用来寻找当鼠标光标叶。交互类型
我们将在这篇文章中讨论了两种类型的交互:调整图像的大小调整控制背景
你需要有一个基本的了解一些成像格式之间的差异。这里有可能是最重要的,你应该知道... ...JPEG
JPEG(联合图像专家组)文件(在大多数情况下)是一种有损格式的DOS文件扩展名是JPG(其他操作系统可能使用JPEG)。几乎所有的数码相机可以保存为JPEG格式,支持24位共8位每色(红,绿,蓝)图像,产生相对较小的文件。当不算太大,压缩并不明显减损图像的质量,但JPEG文件遭受代退化时反复编辑和保存。摄影图像可以更好地存储在一个无损非JPEG格式的,如果他们将被重新编辑,或者如果小quot; artifactsquot;(JPEG的压缩算法所造成的瑕疵)是不可接受的。 JPEG格式也被用来作为在许多Adobe PDF文件的图像压缩算法。巴布亚新几内亚
自由,开源的继任为GIF PNG(便携式网络图形)文件格式创建。 PNG文件格式支持真彩色(1600万色),而GIF仅支持256色PNG文件擅长图像时有大,统一的颜色区域。无损PNG格式是最适合编辑图片,并有损类似JPG格式最适合摄影图像的最终分配,因为JPG文件小于PNG文件。目前许多旧的浏览器不支持PNG文件格式,但使用Mozilla Firefox或Internet Explorer 7,所有现代的Web浏览器现在支持PNG格式的所有常见的用途,包括完整的8位半透明(Internet Explorer 7中可能会显示奇怪的颜色只有当IE浏览器的混浊过滤相结合的半透明图像)。 Adam7交错允许早期预览,即使只有很小比例的图像数据已发送。 PNG是一种可扩展的文件格式为无损,携带方便,光栅图像压缩存储。 PNG提供一个GIF专利免费更换,也可以取代许多共同使用的TIFF。索引颜色,灰度,真彩色图像支持,加上一个可选的alpha通道。 PNG是在线观看的应用,如万维网,设计工作,所以它是一个渐进的显示选项完全流化。 PNG是强大的,同时提供完整的文件完整性检查和简单的检测常见的传输错误。此外,PNG,可以存储异构平台上的提高色彩匹配的灰度和色度数据。一些程序不正确地处理PNG伽玛,这可能会导致图像将被保存或显示较暗比他们应。GIF
GIF(图形交换格式)是有限的,以一个8位调色板,或256种颜色。这使得GIF格式存储相对较少的颜色,如简单的图表,图形,标志,和卡通风格的图像,图形。 GIF格式支持动画,仍然被广泛用于提供图像的动画效果。它还使用一种无​​损压缩,大面积单一色彩,和无效的详细图像或抖动图像时更有效。BMP
BMP文件格式(Windows位图)在Microsoft Windows操作系统处理图形文件。通常情况下,BMP文件压缩,因此,他们是大的优势是他们的简单,被广泛接受,并在Windows程序中使用。我应该使用什么样的格式?
现在,你知道每个图像格式的优点和利弊,让我们把它简单:BMP的使用未压缩的BMP的创建你自己的图纸时,保持你的艺术"作为一个高品质的的蓝印花布,也许在24位色模式。JPEG文件:显然,压缩您的位图/在理想的规模和质量的其他类型。GIF文件:使用此格式来存储图像系列的动画,或将其保存与透明部分一个小的低色标志。PNG图像:存储了几分压缩质量更好的图像,也可能有透明部分。管理资源
这没关系,如果你不是一个图形设计师,你总是可以重用一些专业人士制作,但真正的挑战将是找到一个良好的图形,看起来很像,可能属于一个主题(服务条款艺术和色彩)。寻找资源:尽管如此,谷歌图片是您的最佳来源...在这篇文章中,深蓝色的领域是我们的主题。现在,可用的资源,我们需要进行一些基本的编辑,使他们能够适合我们的解决方案。调整大小:您可以使用MS Office 2003的放大器附带标准的Microsoft Office图片管理器; 2007年,或任何其他图像编辑应用程序,因为这是一个非常基本的功能,必须由几乎每一个成像工具的支持。在MS图片管理器,放大和缩小的首选大小和应用,缩放比例调整大小的选项,牢记您要使用(见导言)的交互类型之一。例如,如果你决定调整图像的大小(选项1),您需要调整您的形象资源,为更小的尺寸状态,否则(选项2),调整您的资源图像的尺寸较大的状态。添加效果:现在你有合适的颜色和大小,您可能要添加一些文字,发光,反射,阴影,透明度..等,或超过一个效果的组合..
透明度,就个人而言,我将使用Adobe Photoshop和执行下列操作:打开MS画笔图片,并选择整个图片(CTRL)。启动Adobe Photoshop的"任何版本会做,因为我们使用的是其最基本的功能已使longquot之一;现在,您已经在剪贴板中的图像尺寸,创建一个新的形象(CTRL N)。确保选择quot; RGB Colorquot;和16位色彩模式中,最重要的是,不要忘记选择quot; Transparentquot;在"背景内容"框中。此外,不改变的新的图像文件的宽度和高度,因为他们已经从剪贴板(你从MS画笔在步骤1中复制一个)相匹配的图片的尺寸..单击"确定"。粘贴在透明背景的新图像区域形象。现在,您需要删除您的图像周围地区。在您的左边的工具框菜单选择的quot;工具,并确保正确设置其属性;魔术Wandquot。公差:您需要调整的公差正确的按钮图像及其周围环境的颜色之间的差别。检查抗锯齿选项告诉魔杖,包括在选择任何微不足道的污垢。检查连续选项点击区域选择您可以随时打CTRL D以明确的选择,如果你犯了一个错误,和Shift单击要添加到您选择的地区。点击"删除"按钮删除这些周边地区,并留下您的图像与透明背景。确保没有什么是按Ctrl ð选择和保存您的新形象,以避免失去的透明度功能为PNG,运用一些基本的压缩,仍然mentain一个良好的色彩深度。
和你做!对于其他的影响,我会建议您使用MS PowerPoint 2007中可用的图像效果,因为它们很容易和漂亮(quot;,至少要有人发现它难以得出他自己的buttonsquot;)。使用代码
始终是更好地在InitializeComponent()方法加载的UI相关的所有工作,这是我们要存储按钮的交互性代码。该方法的年底总是完美的地方,主机控制的事件,所以我们可以确保这些控件的声明和初始化先前已在上面的方法。注意:要找到这个代码,在Form1.cs中,右键单击InitializeComponent方法,并选择"转到"的定义和向下滚动方法的结束。基本引用
首先,你需要包括这两个库,因为它们不是默认包含在标准窗体设计器类:

using System;

using System.Windows.Forms;

using System.Drawing;
调整图像大小:
首先,我们定义MouseEnter和MouseLeave方法。 MouseEnter,我们增加图像的大小,使图像填充控件的宽度和高度,通过改变相关的PictureBox控制项的SizeMode属性预先定义的枚举StretchImage。{C}
到CenterImage使图像变恢复到原来的大小,当鼠标光标离开控制... ...
private void pb_img_MouseLeave(object sender, EventArgs e)

{

    ((PictureBox)(sender)).SizeMode = PictureBoxSizeMode.CenterImage;

}

,然后,分配相对EventHandler的按钮(PictureBoxes):
#region Assigning events for Image Resizing Buttons

this.pb_img_Reload.MouseEnter += new System.EventHandler(this.pb_img_MouseEnter);

this.pb_img_Reload.MouseLeave += new System.EventHandler(this.pb_img_MouseLeave);



this.pb_img_Channel.MouseEnter += new System.EventHandler(this.pb_img_MouseEnter);

this.pb_img_Channel.MouseLeave += new System.EventHandler(this.pb_img_MouseLeave);



this.pb_img_Flash.MouseEnter += new System.EventHandler(this.pb_img_MouseEnter);

this.pb_img_Flash.MouseLeave += new System.EventHandler(this.pb_img_MouseLeave);



this.pb_img_About.MouseEnter += new System.EventHandler(this.pb_img_MouseEnter);

this.pb_img_About.MouseLeave += new System.EventHandler(this.pb_img_MouseLeave);

#endregion

注意,我们分配相同的pb_MouseEnter pb_MouseLeave方法以及所有其他PictureBoxes。
注意在这个方法中,原始大小的图片是在一个CenterImage大小模式("onequot较小;),这就是为什么你失去了一些图像质量扩大。调整conrol:图片大小的方法,我们首先定义MouseEnter和MouseLeave方法。 MouseEnter,我们将增加从24像素大小控制至28日,即4个像素大,PictureBox控件的默认左上角为基点,我们也需要把它2个像素,回到那个角落(4 / 2),使其保持居中。
private void pb_ctrl_MouseEnter(object sender, EventArgs e)

{

    ((PictureBox)(sender)).Size = new Size(28, 28);

    ((PictureBox)(sender)).Location = 

      new Point((((PictureBox)(sender)).Location.X)-2, 

                (((PictureBox)(sender)).Location.Y)-2);

}

和MouseLeave的方法,反之亦然... ...
private void pb_ctrl_MouseLeave(object sender, EventArgs e)

{

    ((PictureBox)(sender)).Size = new Size(24, 24);

    ((PictureBox)(sender)).Location = 

         new Point((((PictureBox)(sender)).Location.X) + 2, 



                   (((PictureBox)(sender)).Location.Y) + 2);

}

,然后,分配相对EventHandler的按钮(PictureBoxes):
#region Assigning events for Control Resizing Buttons

this.pb_ctrl_Reload.MouseEnter += new System.EventHandler(this.pb_ctrl_MouseEnter);

this.pb_ctrl_Reload.MouseLeave += new System.EventHandler(this.pb_ctrl_MouseLeave);



this.pb_ctrl_Channel.MouseEnter += new System.EventHandler(this.pb_ctrl_MouseEnter);

this.pb_ctrl_Channel.MouseLeave += new System.EventHandler(this.pb_ctrl_MouseLeave);



this.pb_ctrl_Flash.MouseEnter += new System.EventHandler(this.pb_ctrl_MouseEnter);

this.pb_ctrl_Flash.MouseLeave += new System.EventHandler(this.pb_ctrl_MouseLeave);



this.pb_ctrl_About.MouseEnter += new System.EventHandler(this.pb_ctrl_MouseEnter);

this.pb_ctrl_About.MouseLeave += new System.EventHandler(this.pb_ctrl_MouseLeave);

#endregion

注意,我们分配相同的pb_MouseEnter pb_MouseLeave方法以及所有其他PictureBoxes。
注意在这个方法中,原始大小的图片是在MouseEnter事件之一,"; onequot越大;,那就是为什么你丢失一些图像质量时,它的小。其他方法
当然,也有这样做的其他方法,如:使用两套对于任何一个国家的图像,和典型的方式做到这一点,是通过使用不同的图像尺寸为每幅图像设置两个ImageList控件..如果这是你的选择,记得设置足够高的颜色深度控制,所以它可以支持透明度。使用资源包quot;象iconsquot;可以包含多个不同大小和质量在同一个封装的图像。使用一些透明色设置,"ImageStrip;通常Magentaquot,指定每个图像资源的规模和边界。或其他一些发达国家的控制,甚至有可能使用这些简单的活动,包括它。像WPF技术是发展此种控制的一个完美的例子。兴趣点
包括你的代码里面的设计师的可能是一个不好的做法,VS会自动重新排列的方式,使每个控制的相关线路设计师的代码。
注意在代码中的对象发送和解析其从PictureBox类的起源,以避免单独命名每个对象的方式使用:
private void pb_ctrl_MouseEnter(object sender, EventArgs e)

{

    ((PictureBox)(sender)).Size = new Size(28, 28);

    ((PictureBox)(sender)).Location = 

       new Point((((PictureBox)(sender)).Location.X)-2, 

                 (((PictureBox)(sender)).Location.Y)-2);

}

...

this.pb_ctrl_Reload.MouseEnter += new System.EventHandler(this.pb_ctrl_MouseEnter);

一个更好的做法是使用引用的对象调用如下:
private void pb_ctrl_MouseEnter(ref object sender, EventArgs e)

{

    PictureBox pb = ((PictureBox)(sender))

    pb.Size = new Size(28, 28);

    pb.Location = new Point((pb.Location.X)-2, (pb.Location.Y)-2);

}

...

this.pb_ctrl_Reload.MouseEnter += 

     new System.EventHandler(ref this.pb_img_MouseEnter);

,但不幸的是,这是不允许的事件处理程序。至少据我所知,如果你知道一个办法做到这一点,请告诉我们。

回答

评论会员:游客 时间:2012/01/25
贾里德瑟斯克(Thirsk)
动画或更复杂的东西将是很好的
评论会员:保罗Farry 时间:2012/01/25
第二部分将包括:发光,反射,亮化,和动画..这是适合初学者!虽然一个问题,为什么我们已经否决每一个初学者的文章,就像我们没有一个自己有一天吗??有趣的事情,但我认为非常低,自己这篇文章,但它有一个比较高的评价!!不告诉我们,这里的很多人都宁愿这么简单的文章,他们就可以开始与??

我们将找到一种方法,或做一个!
(\ /)
- ( - .-)
彗星(''')('''){ BR}
评论会员:游客 时间:2012/01/25
会员3879182:|这里没有新
seeblunt
评论会员:游客 时间:2012/01/25
第二部分将包括:发光,反射,亮化,和动画..这是适合初学者!虽然一个问题,为什么我们已经否决每一个初学者的文章,就像我们没有一个自己有一天吗??有趣的事情,但我认为非常低,自己这篇文章,但它有一个比较高的评价!!不,告诉我们,这里的许多人都宁愿这么简单的文章,他们就可以开始与呢?我们将找到一种方法,或做一个!(\/)-(-.-)彗星(''')('''){BR}
韩晓
评论会员:游客 时间:2012/01/25
在C#中,所有的对象都是通过引用传递的,所以下面的代码将工作(不包括在参数列表中的ref)。ref是不允许在事件处理程序的参数列表,因为它改变了方法调用的签名,所以它不匹配的EventHandler的签名。codeprespanclass="code-keyword"private/spanspanclass="code-keyword"void/spanpb_ctrl_MouseEnter(spanclass="code-keyword"object/spansender,EventArgse){PictureBoxpb=((PictureBox)(sender))pb.Size=spanclass="code-keyword"new/spanSize(spanclass="code-digit"28/span,spanclass="code-digit"28/span);pb.Location=spanclass="code-keyword"new/spanPoint((pb.Location.X)-2,(pb.Location.Y)-2);}...spanclass="code-keyword"this/span.pb_ctrl_Reload.MouseEnter+=spanclass="code-keyword"new/spanSystem.EventHandler(spanclass="code-keyword"ref/spanspanclass="code-keyword"this/span.pb_img_MouseEnter);/pre/code