为什么QPainter标度(化妆品)指向一个轴,尽管它们不应受到影响?

时间:2018-09-05 09:07:51

标签: c++ qt qpainter

我正在Qt应用程序中绘制线条和点,并且遇到了QPainter中的缩放错误。我的线工作得很好,但是尽管笔设置为“美容”,但点会受到某些缩放比例的变换的影响。最让我困扰的是似乎只有一个轴(x轴)受到了影响。否则,我可以将其归结为转换/矩阵代码中的一些浮点精度问题。

Qt版本:嵌入式Qt 4.8 台式机Qt 5.4 ,台式机 Qt 5.6 LTS

以下一些渲染图实际上应该看起来都一样(如最左边的渲染图):

enter image description here

我有一个从QWidget派生的RenderArea,它简单地绘制了上面的图像之一。 RenderArea只需在main()中实例化并显示。该代码很简单,因此这里是相关的绘画代码:

<b-navbar toggleable="md" variant="light" type="light">
                <b-navbar-toggle target="nav_collapse"></b-navbar-toggle>
                <b-collapse is-nav id="nav_collapse">
                    <b-navbar-nav vertical class="bd-sidebar">
                        <div>
                            <b-nav-form>
                                <b-input-group>
                                    <b-form-input v-model={this.keyword} placeholder="Search by keyword..."></b-form-input>
                                    <b-input-group-append>
                                        <b-btn on-click={this.clearModel} variant="secondary">Clear</b-btn>
                                    </b-input-group-append>
                                </b-input-group>
                            </b-nav-form>
                            <WikiNavItem contents={this.availableContents} layer={0} classes={this.classes} />
                        </div>
                    </b-navbar-nav>
                </b-collapse>
            </b-navbar>

该示例基于Qt随附的basicdrawing示例,但我将所有内容都剥离了下来以突出问题。

  • 为什么会出现此问题?
  • 为什么只在一个轴上出现?

1 个答案:

答案 0 :(得分:1)

要结束本主题,我想添加对另一个stackoverflow问题的引用: Why does QPainter::drawPoint draw a horizontal line segment?

这似乎是Qt中的错误,该错误已在此处提交: QPainter::drawPoints draws line segments instead of points

正如评论中指出的那样,可以通过编写自己的绘图点代码,修补Qt,绘制图像而不是点或使用drawEllipse来克服此错误。