【问题标题】:c# - transparency not being drawn properly (fast enough)c# - 没有正确绘制透明度(足够快)
【发布时间】:2010-11-25 15:00:15
【问题描述】:

这是我在这个网站上的第一个问题,但过去对我有很大帮助。

我正在处理的项目有一个小问题(但很烦人)。我正在使用一个图片框控件,它加载一个带有透明区域的 png 文件。透明度部分工作得很好,但我需要用户能够用鼠标拖动这个图片框。图片框包含在带有正方形的面板中。正方形是在面板的重写 OnPaint 方法中绘制的。

问题是,如果我移动图片框控件,透明区域绘制背景的速度不够快,并且正方形没有准确绘制在它们应该在的位置。有什么办法可以解决这个问题,让一切看起来都很好和顺利吗?

我附上了一张图片,以便您更好地理解我想说的话。对于这个例子,我只使用一条线而不是我将使用的实际图片,这样一切都更加明显。注意线周围的方块,它们没有正确绘制。

http://s1084.photobucket.com/albums/j405/headbanging1638/?action=view&current=problem.jpg

ps:我使用 color.transparent 作为图片框的背景色

【问题讨论】:

    标签: c# .net transparency mousemove


    【解决方案1】:

    也许您可以尝试使 mousemove 上的布局无效以强制加快重绘速度?

    【讨论】:

    • 感谢您的回答,但是已经在 mousemove 事件中调用了 invalidate 方法:(
    • 嗯,也许您可​​以通过实验尝试如果您创建一个计时器会发生什么情况,该计时器会在鼠标按下时在拖动的项目上强制执行 25 fps 重绘循环?
    • 25fps 和 .Refresh() 而不是 .Invalidate() 的计时器,问题几乎不明显。我想我会坚持这个解决方案。谢谢:)
    【解决方案2】:

    我认为我之前问过的问题很相似。

    查看我的Question,以及我接受的答案。我想它会对你有所帮助。

    【讨论】:

    • 嘿,谢谢你的链接。给了我使用 .Refresh() 而不是 .Invalidate() 的想法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 2012-09-03
    • 2012-03-28
    • 2018-04-02
    相关资源
    最近更新 更多