Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 打印时GDI多段线部分输出_C++_Winapi_Gdi - Fatal编程技术网

C++ 打印时GDI多段线部分输出

C++ 打印时GDI多段线部分输出,c++,winapi,gdi,C++,Winapi,Gdi,打印输出时调用Win32 GDI Polyline()时,我发现一个奇怪的问题。在屏幕上看起来一切正常,但如果打印,当遇到较大值时,将停止多段线。我认为这种差异是由于打印的缩放产生了更大的点值 如果多段线的值大于32767,则多段线将停止绘制,即,点值上存在16位限制 我在网上看到一些关于16位值的说法,但是没有明确的理由。在考虑可能的解决方案之前,我想先了解一下为什么会出现这种情况。根据MS文档,在Windows 9X中会出现这种情况,坐标是32位的,但底层实现是16位的,值只是被截断了。实际

打印输出时调用Win32 GDI Polyline()时,我发现一个奇怪的问题。在屏幕上看起来一切正常,但如果打印,当遇到较大值时,将停止多段线。我认为这种差异是由于打印的缩放产生了更大的点值

如果多段线的值大于32767,则多段线将停止绘制,即,点值上存在16位限制


我在网上看到一些关于16位值的说法,但是没有明确的理由。在考虑可能的解决方案之前,我想先了解一下为什么会出现这种情况。

根据MS文档,在Windows 9X中会出现这种情况,坐标是32位的,但底层实现是16位的,值只是被截断了。实际上,我几年前就已经在非9X Windows版本中遇到了同样的问题,但我相信情况与您的有所不同。我的“大”坐标不在那里,因为直流分辨率很高,但因为我有一条线,一端在屏幕内,另一端在远离屏幕的地方——其行为是可见部分不会在正确的点截取屏幕边缘。在我的例子中,我通过在画图之前剪裁线条来解决这个问题。 也许您的问题是您正在使用的特定打印机驱动程序中的错误,您是否尝试过使用其他驱动程序


是的,旧的16位Windows 3.x坐标最大值仍然存在于分散的不明显位置。在这种情况下,它很可能是您的打印机驱动程序。如果驱动程序升级无法解决此问题,您只能自己缩放多段线。

实际上,您描述的问题也正是我正在做的。我画了一个点,实际上是在屏幕外。屏幕分辨率低于16位边界,但打印时则不是。我将在显示/打印之前剪切该区域-我继承的代码;)