使用DirectX11进行Direct2D绘图:在显示图形上对齐矩形
Direct2D Drawing with DirectX11: Aligning rectangles on a display graph
我正在使用Direct2d (DirectX11)的c++图形应用程序上工作。应用程序接收传感器数据,并使用在x轴(表示时间)上并排放置的矩形显示输入。每个矩形都用线性梯度刷填充,表示沿y轴显示的离散时间间隔内的多个传感器读数。当获得读数时,下一个矩形的起始"x"位置的位置应该正好是最后一个矩形结束的位置,即rect1。右应该是直的,左应该是直的。每个rect的起始点使用下面的伪代码计算:
//find the number of rectangles needed to represent the time scale (rects must be an integer, as we cannot display partial rectangles
int nNumXRects = fAxisLength/fTimeDivision;
//calculate the X-axis increment for each rectangle
float fXIncrement = fXAxisLineLength/(float)NumXRects;
//Get the next x position
rect2.left = rect1.right;
rect2.right = rect2.left + fXIncrement;
我的问题是,图形只有在fXIncrement的值恰好是一个整数时才正确显示,例如3.0f。这显然将x轴的长度限制为矩形数量的倍数,乘以每个矩形的长度。这会影响应用程序中所有其他元素可用的区域。如果增量值不是整数,则矩形之间会出现小黑线,这破坏了外观,使数据更难解释。我意识到为什么这是发生在原则上-我们不能显示一个像素的一小部分,例如,但如何正确地做到这一点,使矩形将始终匹配准确,不管轴的长度?似乎Direct2D是完美的,并且应该本质上处理将分数值映射到物理像素,但我不知道当前简单的解决方案之外的正确方法是保持x轴的长度固定(这意味着我不能正确缩放,其他元素在水平方向没有足够的空间)。
在正确的方向上的任何指示将不胜感激!
在绘制矩形时,不能通过设置适当的反混叠模式来固定吗?
pRenderTarget->SetAntialiasMode(D2D1_ANTIALIAS_MODE_ALIASED);
相关文章:
- C++图形类指针混淆
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 如何在内核C++中使用1920x1080x16M图形或类似的16M颜色?(VGA)
- 这是实现图形的坏方法吗
- 打印 ONNXRUNTIME::图形没有模型
- 提升如何在图形可视化中写入边缘的权重?
- Doxygen - 如何在不生成图形的情况下生成文本调用关系结果
- C++ 中的图形菜单
- 将图形属性与 std::unique_ptr 捆绑在一起
- 从流到邻接列表的向量读取图形
- 替代在python中制作邻接列表与图形问题的字典?(如 C++ 中的 vector<vector<int&g
- 将图形表示为unordered_map<字符串、向量>时拓扑排序错误<string>
- 直接显示手动图形内存泄漏
- Directx 12 :在两个进程之间共享图形内存
- Microsoft C++ 用于图形 API 的 Rest SDK
- 如何将到达图形视图右侧(末端)的QGraphicsPixmapItem移动到左侧(开始)侧(就像在贪吃蛇游戏中发生的事情
- 图形初学者C++(跳过控制台)?
- 在 cpp 中最简单的图形实现
- 提升图形库:资源受限的最短周期
- 使用 stl 库创建图形是如何工作的?