【问题标题】:Control background not displaying the way I want控制背景未按我想要的方式显示
【发布时间】:2012-04-06 01:44:51
【问题描述】:

好的,所以我有一个自定义控件,我正在对其应用背景渐变。它所在的控件设置为左右锚点,并且控件上的图像设置为拉伸。

这是背景图像在表单正常大小时的样子。

这是控件被拉伸时背景图像的样子。

显然,我希望它看起来像顶部的边缘。我正在使用 Inkscape 开发背景图像。任何有关如何避免这种模糊边缘的帮助将不胜感激。

【问题讨论】:

    标签: c# winforms custom-controls inkscape


    【解决方案1】:

    我建议在您的控件中尝试 9 个图像,每个边缘一个,每个角以及中间容器一个,也许您已经在很多网站上看到过这种技术。如果您将所有图像设置为具有良好锚点,则顶部和底部边缘将仅横向拉伸,左右将向上和向下拉伸。角落永远不会改变,容器将完全可拉伸。我担心闪烁,因为它是winform。值得尝试。

    如果你使用一个固定的图像,即使它更大并且你缩小它,你也会失去角落的比例。

    【讨论】:

    • 只是出于好奇,如果我使用 WPF 控件,我是否不必担心闪烁?
    【解决方案2】:

    当系统调整图像大小时,它会逼近新拉伸图像中缺失的像素。您无法采取任何措施来防止出现模糊。我认为唯一明智的选择是以更高分辨率添加图像(这应该很容易,因为您使用 Inkscape 创建它们)并让系统缩小而不是拉伸它。

    【讨论】:

    • 我明白了,当我尝试在 Inkscape 中成功导出高分辨率图像时。但是,当我将其设置为控件的背景图像时,它显然不会自行缩小,除非我将 BackgroundImageLayout 设置为拉伸。有什么建议吗?
    • 控件背景尺寸是多少,从Inkscape导出的图片尺寸是多少?
    • 我将背景导出为非常大,认为这可以解决我的模糊问题。所以我做了类似 1380 x 166 的操作,而我的控件在正常宽度下是 520 x 166。当我最大化时,宽度当然会增加。
    • 好吧,有了这么大的画面,我建议采用 Erik 的方法,将大图像分割成每个边缘和每个角落的单独图像。您无法可靠地拉伸这种尺寸的图像。最终使用单色背景并以编程方式绘制框架和圆角。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 2019-07-28
    • 2020-06-19
    • 2023-01-29
    • 1970-01-01
    • 2012-12-22
    相关资源
    最近更新 更多