1

我正在开发一个图形应用程序,并且有许多带有标题的对象。为了放置字幕,我计算了 X、Y 坐标并调用:

Canvas.TextOut(XText, YText, FCaption);

我决定使用不同的映射模式来简化从世界空间到设备空间的转换:

SetGraphicsMode(cnv.Handle, GM_ADVANCED);
SetMapMode(pbxMain.Canvas.Handle, MM_HIENGLISH);

现在我的字幕打印颠倒了,但仍然是从左到右。

关于如何补救的任何想法?

我考虑过的一种方法是将地图模式设置回输出文本的默认值,这需要进行一些转换才能在不同模式下获得 X、Y。这是一个合理的策略吗?在绘画程序期间更改地图模式是否“正确”......?

4

1 回答 1

1

尽管在设置MM_HIENGLISH地图模式时 y 轴反转,但假设默认值为MM_TEXT,它不会导致文本输出颠倒 - 它只会影响输出位置。

您可能想检查您是否正在调用SetWorldTransform您观察到的问题的可能原因 - 错误的转换。转换结构参数的负值eM22导致在 y 轴上的反射。

关于最后一部分,我没有看到在单个绘图任务期间切换地图模式有任何问题,除了它可能会使维护代码变得复杂。

于 2021-03-05T15:28:49.630 回答