当前位置:  开发笔记 > 编程语言 > 正文

按钮图像离按钮顶部太远; 太靠近按钮的底部

如何解决《按钮图像离按钮顶部太远;太靠近按钮的底部》经验,为你挑选了1个好方法。

我正在使用VB.NET 2005中的Windows窗体,我想要一些带图像的按钮(我说的是普通的,香草的System.Windows.Forms.Button).我按照我想要的方式设置了所有内容,但是按钮上的图像显示得太低,因此图标的底部几乎位于按钮底部,图像上方有很多空间.

这是一个截图:
按钮截图​​http://www.freeimagehosting.net/uploads/b28a5c63b8.jpg

看看图标的角落是如何刷到按钮底部的?

我的按钮高23像素,图像是16 x 16图标(转换为位图,以便可以将其分配给按钮的Image属性).

我已经尝试将按钮的Margin.All属性设置为0,并验证Padding.All属性为0.我也尝试将按钮的ImageAlign更改为TopLeft,MiddleLeft和BottomLeft,但这些设置似乎都没有任何影响.

有谁知道我如何将图像定位到距按钮顶部和底部边缘相等的距离?我可以根据需要调整按钮或图像的大小,但它们是我喜欢的尺寸,如果可能的话我希望保持这种状态.



1> 小智..:

我刚刚遇到了类似的问题,我能够通过努力思考来解决这个问题.(这些情况不是很好吗?)

说明

首先,了解ImageAlign并不意味着您想要图像的位置.这意味着应该使用图像上的哪个点(像素)进行定位.因此,如果选择"TopLeft",则图像的最左上角像素将在按钮上垂直居中.

如果您有一个带有居中图像的按钮,其ImageAlign垂直设置为"居中",并且其尺寸为偶数个像素,则会出现此问题.您的图像是16x16像素 - 16是偶数.中间像素理论上位于像素8和像素9之间.由于没有像素8.5,VB向下舍入到8,从而使用像素8作为定位像素.这是您不需要的上边距的根本原因.

您的按钮具有奇数像素高度(23px),这意味着它具有真正的中心像素 - 像素12.VB尝试将图像的中心像素(8)定位在按钮的中心像素(12)的顶部.这使得图像的8个像素低于中心,7个像素超出中心.为了解决问题,图像上方会出现1像素的边距.

解决方案

在底部填充1个额外像素的图像.现在图像的高度为奇数(17像素),使图像成为真正的中心像素,可以与按钮的中心像素完美对齐.

这就是我为自己解决问题的方法.但是,我刚刚想到了一个更简单的解决方案.通过为图像指定1px的下边距,您可能可以获得相同的结果.我没有测试过这个解决方案,但理论上它似乎等同于第一个解决方案.

附加说明:EVEN尺寸的两个物体理论上应该能够完美地对中.但奇怪的是,即使按钮和图像BOTH具有均匀的尺寸,也会出现对齐问题.(显然,编译器在确定一个控件与另一个控件的中心像素的方式上不一致.)尽管如此,在这种情况下,同样的解决方案也适用.


将填充值设置为"0; 0; 1; 1"有帮助.感谢您的解决方案和解释!
推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有