首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在WPF中,创建工具栏按钮以便正确缩放图像的最佳方法是什么?

在WPF中,创建工具栏按钮以便正确缩放图像的最佳方法是什么?
EN

Stack Overflow用户
提问于 2009-03-27 22:16:53
回答 4查看 11.3K关注 0票数 4

具体地说,我希望使用VS2008ImageLibrary附带的16*16 32位png图像。我尝试过手动设置图像的高度和宽度属性,调整边距和填充,调整Stretch和RenderOptions。我创建工具栏按钮的尝试都导致了不正确的缩放(模糊图标),图标上的底行像素被截断,或者工具栏按钮的大小不正确-更不用说已经提到的Here消失的图标了。有没有人找到了让标准的VisualStudio/WinForms风格的工具栏按钮在WPF中正确显示的最佳方法?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-03-28 23:43:11

首先,将图像分辨率更改为96DPI,这可以使用免费的Paint.net ( http://www.getpaint.net )完成,方法是打开文件,从菜单中选择图像->画布大小,将“分辨率”调整为96并保存。

如果这不起作用,那么可以使用我在我的博客中写的解决方案,这里是http://www.nbdtech.com/blog/archive/2008/11/20/blurred-images-in-wpf.aspx

票数 4
EN

Stack Overflow用户

发布于 2009-03-28 11:55:40

最好的方法是使用矢量图形而不是png。我知道下面的内容不是你想要的,但是imho没有办法让图标看起来更好看。此外,它还可以帮助您摆脱页边距和填充。(好吧,如果你想用照片,那你就完蛋了)

坏消息是你可能需要重新绘制所有的图标。您可以使用MS Expression Blend(它能够将绘制的图像另存为.xaml)来完成此操作,也可以使用文本编辑器自行创建它们。我更喜欢放置图标的Border.Background而不是Image.Source,这允许我将文本放在图像上。下面的代码看起来是这样的:

代码语言:javascript
运行
AI代码解释
复制
<Window.Resources>
   <ResourceDictionary Source="Resources/Icons.xaml"/>
</Window.Resources>
<!--
...
-->
<Button>
   <Border Background="{StaticResource IconName}" Height="16" Width="16" />
</Button>
票数 3
EN

Stack Overflow用户

发布于 2009-03-28 09:02:21

我能想到的最好的解决方法是:

代码语言:javascript
运行
AI代码解释
复制
<Image x:Key="TB_NewIcon" Source="Toolbar Images/NewDocumentHS.png" Height="16" Width="16" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/>
...
<Button Command="ApplicationCommands.New" Content="{StaticResource TB_NewIcon}" Padding="2,2,2,1"/>

或者:

代码语言:javascript
运行
AI代码解释
复制
<BitmapImage x:Key="TB_NewIcon" UriSource="Toolbar Images\NewDocumentHS.png"/>
...
<Button Command="ApplicationCommands.New" Padding="2,2,2,1">
    <Image Source="{StaticResource TB_NewIcon}" Height="16" Width="16" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/>
</Button>

对于Button标记,需要padding属性来确保图像不会在15像素的高度被截断,并且按钮的大小不会调整以适合图像。或者,我们可以指定Padding="1",但是我们必须手动设置Height="21“和Width="22”,以确保按钮的大小不会调整到适合图像

在“图像”选项卡上,需要设置高度和宽度以确保图像不会被拉伸。SnapsToDevicePixels和RenderOptions.BitMapScalingMode都是必需的,以确保不会模糊。我不能保证这对所有的解决方案都能很好地工作。

注意:对于NewDocumentHS.png图标,问题最多的一个,因为它占用了整整16个像素的高度,你可能想要调整填充为"1,1,3,2",以便底部与其他图标对齐得更好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/692334

复制
相关文章
Python异常处理traceback和exc_info
开发过程中一般都会使用traceback将捕获到的异常打印出来。 import traceback def fake_exception(): 1 / 0 def catch_exception(): try: fake_exception() except: traceback.print_exc() catch_exception() 结果 Traceback (most recent call last): File ".\test.p
Ewdager
2020/07/14
6490
Python 日志打印之logging.config.dictConfig使用总结
dictConfig函数位于logging.config模块,该函数通过字典参数config对logging进行配置。3.2版本新增的函数
授客
2021/01/13
4.1K2
11 | Tornado源码分析:Gen 对象(下)
我们先看一下源码(我已经进行过整理的源码,主要方面大家去理解里面的实现逻辑,若想看完整的源码建议大家可以自行查看本机安装的 tornado 版本中的源代码),在源码中我做了一些批注,这样有利于大家更好的去结合代码来深入了解 其内部的运作。
python编程从入门到实践
2020/09/09
4260
Openstack之log详解
openstack中的日志由oslo_log统一实现,延续了openstack一贯的封装大法,以十分友好的方式将接口提供给各个组件使用。
tunsuy
2022/10/27
4940
[源码解析] PyTorch 流水线并行实现 (6)--并行计算
前几篇文章我们介绍了 PyTorch 流水线并行的基本知识,自动平衡机制和切分数据,本文我们结合论文内容来看看如何实现流水线。
罗西的思考
2021/10/13
1.5K0
12 | Tornado源码分析:BaseIOStream 对象(上)
hello 大家好 通过前几期我们已经聊了 Tornado 中协程的创建、运行,本期我们开始聊聊 tornado 中 网络读写数据处理相关的内容,这部分还是比较复杂的我们打算拆分成几期来聊。
python编程从入门到实践
2020/09/16
4630
PyTorch 源码解读之流水线并行
如图所示为谷歌提出的流水线并行算法,名为 GPipe,论文位于 https://arxiv.org/abs/1811.06965。首先将模型切分为连续的多个 stage,每个 stage 占据一台设备,从而利用多台设备容纳下单设备无法容纳的模型。其次,GPipe 将 mini-batch 切分为多个 micro-batch,每次只处理一个 micro-batch。在处理完当个 micro-batch 后,该 micro-batch 的结果将会被发送给下一台设备,同时开始处理下一个 micro-batch。
OpenMMLab 官方账号
2023/09/28
8320
PyTorch 源码解读之流水线并行
uwsgi日志中文问题
开发项目,使用uwsgi,遇到个头痛的问题,如果指定了uwsgi打印日志,当日志中写入中文时,直接会导致报错
fanspring
2019/06/27
1.7K0
Python常用库 - logging日志库
logging 使用非常简单,使用 basicConfig() 方法就能满足基本的使用需要;如果方法没有传入参数,会根据默认的配置创建Logger 对象,默认的日志级别被设置为 WARNING,该函数可选的参数如下表所示。
小菠萝测试笔记
2020/06/09
8540
如何扩展python的logging组件支持json日志输出
这两天在优化公司一个python的项目,顺便研究了一下如何将python日志转成json格式,原来在Java的项目中搞过类似的事情,知道日志转成json之后有很多便利的之处,最常见的就是可以直接对接各种日志分析系统,如开源的ELK,将数据导入之后就能快速的进行查询和分析,方便做各种统计,监控或报警等。
我是攻城师
2019/03/06
3.1K0
如何扩展python的logging组件支持json日志输出
Python Web开发中的WSGI协议
 在Python Web开发中,我们一般使用Flask、Django等web框架来开发应用程序,生产环境中将应用部署到Apache、Nginx等web服务器时,还需要uWSGI或者Gunicorn。一个完整的部署应该类似这样:
py3study
2020/01/16
9170
09 | Tornado源码分析:Future 对象
今天我们来看一下 Future 这个对象。从字面意思来看有“未来,将来......”之意义。那它在Tornado 构建的体系中扮演者什么样的角色呢?我们先看一下它的源码:
python编程从入门到实践
2020/07/28
8750
python 查找指定目录下的指定类型文件 脚本
""" Find the largest file of a given type in an arbitrary directory tree. Avoid repeat paths, catch errors, add tracing and line count size. Also uses sets, file iterators and generator to avoid loading entire file, and attempts to work around undecodable dir/file name prints. """
用户5760343
2022/05/13
1.6K0
scrapy进阶开发(一):scrapy架构源码分析
其子类有HtmlResponse,TextResponse,XmlResponse
Meet相识
2018/09/12
2.5K0
scrapy进阶开发(一):scrapy架构源码分析
tf.train.Coordinator
任何线程都可以调用coord.request_stop()来请求所有线程停止。为了配合请求,每个线程必须定期检查coord .should_stop()。一旦调用了coord.request_stop(), coord.should_stop()将返回True。 一个典型的线程运行协调器会做如下事情:
狼啸风云
2019/06/13
1.6K0
python gui中线程的调用
""" ################################################################################# System-wide thread interface utilities for GUIs.
用户5760343
2022/05/13
3770
一篇文章带你搞定Python中logging模块
日志是什么?这个不用多解释。百分之九十的程序都需要提供日志功能。Python内置的logging模块,为我们提供了现成的高效好用的日志解决方案。但是,不是所有的场景都需要使用logging模块,
Go进阶者
2021/11/19
4390
一篇文章带你搞定Python中logging模块
点击加载更多

相似问题

反应-本机:挠曲盒对齐

24

右对齐反应本机挠曲盒

32

挠曲盒高度在反应本机

10

挠曲盒响应导航问题

10

图像内响应挠曲盒问题

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文