【问题标题】:Graphics/Bitmap Limits?图形/位图限制?
【发布时间】:2010-04-07 02:04:12
【问题描述】:

我在图形和位图方面遇到了一些奇怪的问题。

我有一个显示在 PictureBox 上的图形对象,我正在捕获 MouseMove 和 MouseClick 事件,这些事件在图像上给出了鼠标的 X 和 Y 位置,但如果 Y 位置变大然后 32775,它就会进入负数,这意味着一切都破裂了。如果图像大于 65535,则它会停止显示图像。

任何想法如何解决这些问题?

谢谢

示例代码:

http://pastebin.com/YEX0XD1q

只需点击 Make 10,000 Bigger 大约 4 次,然后向下滚动,它会在右侧显示鼠标 X 和 Y 位置,当您向下移动图像并将鼠标悬停在红色区域上时,如果您向下足够多,它将进入负Y。

【问题讨论】:

  • 您是否在 PInvoking API 调用以获取鼠标位置?在 .Net 中,MouseMove 事件中的 MouseEventArgs 参数将 X 和 Y 指定为 int,因此您不应该遇到此 short 环绕问题(我自己从未尝试过使用这么大的 PictureBox)。
  • @MusiGenesis 假设整个系列都得到保证...
  • 我自己也试过了,设计师不让我把PictureBox的高宽设置成大于32767,你是怎么做到的?
  • 我在面板内有一个自动滚动的 PictureBox,我正在将 PictureBox.Image 更改为更大的图片,这使得 PictureBox 在面板内变得更大。如果你能理解的话。
  • 我能理解,只是无法复制。当我将 PictureBox 放入 AutoScroll Panel 时,我仍然无法使 PictureBox 大于 32767(对于高度或宽度)。我可以创建一个更大的位图并将其分配给 PictureBox 的 Image 属性,但这仍然不会使 控件 大于 32767。如果你能发布一个代码示例来说明您的问题。

标签: c# graphics bitmap


【解决方案1】:

通过研究,我设法解决了我的问题

  1. 不要在 Panel 中使用 PictureBox,而是使用 ScrollableControl。这将解决我无法制作大于 65K 高度的问题。
  2. 使用 GetVirtualMouseLocation 获取虚拟鼠标位置

我刚刚用的是posted here

以上工作完美。

【讨论】:

    猜你喜欢
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多