【问题标题】:MFC Picture ControlMFC优化校准
【发布时间】:2016-01-29 01:06:06
【问题描述】:

我在图片控件中绘制传入数据。有没有直接的方法来改变分辨率,所以我可以使用更密集的像素网格?我宁愿不必处理任何文件 IO,因为我的执行时间很紧迫。图片控件周围的对话框似乎具有更高的分辨率。

我很抱歉我最初提供的信息明显缺乏,因为我不确定要使用什么白话。下面是在 OnPaint() 函数中使用的一段 sn-p 代码。

//Draw X Axis
    int XIncrement = 40;
    int TextY = YOrigin + 5;
    int IntNum; 
    CString Str;
    //Label
    dc.TextOutW(10, 5, Str = "Part Profile", 12);
    dc.TextOutW(GraphMax / 2, YOrigin + 20, Str = "Part Length (in)", 16);

    for (int N = 0; N < 25; N++) {
        IntNum = N * 5;
        Str.Format(_T("%d "), IntNum);
        dc.Rectangle(N * XIncrement + XOffset, YOrigin, N * XIncrement + 2 + XOffset, YOrigin + 5);
        dc.TextOutW(N * XIncrement + XOffset - 7, TextY, Str, 3);
    }

我需要一个非常基本的图表来帮助确定高速生产线上的弓形检测机的算法。我使用图片控件只是因为 MFC 似乎没有一个优雅的解决方案,而且我在网上找到的所有其他东西似乎都有很多开销。如果您有其他建议我是开放的,我不是专家。就分辨率而言,我的 UI 上此控件周围的文本似乎具有更精细的分辨率。我只是好奇我是否可以控制图片控件内的分辨率。这将使我能够更清晰地绘制 1200 个数据点。

【问题讨论】:

  • 我的直接建议是不要使用图片控件。特别是如果您关心执行时间,有很多替代方案可能效果更好。例如:codeproject.com/Articles/15694/Realtime-Chart-and-Graph-in-One
  • 我很困惑为什么你认为你引用的项目比在像素中画线更轻量级?
  • 完全不清楚,您要显示什么类型的图表,如何渲染它们,您希望从提高分辨率中获得的具体优势,或者为什么周围的渲染看起来更高解析度。我猜想,你会受到整数运算产生的混叠伪影的影响。请出示您认为会产生不良结果的代码。

标签: c++ image mfc controls


【解决方案1】:

您无法对位图或位图放大进行任何改进。更好的选择是让用户对图表有更多的控制权,例如插入几个滑块控件。

一个滑块更改 x 偏移量,例如它允许 x 轴从零开始,或从 50 开始。另一个滑块更改缩放。例如 x 轴可以更改为从 (0 到 100) 或 (0 到 1000)

为了使图表更有趣,通过将此行添加到主 *.cpp 文件来启用现代 UI 外观:

#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

使用像 Segoe UI 这样更现代的字体,并设置文本背景颜色以匹配画布背景:

CFont font;
font.CreatePointFont(90, L"Segoe UI");

dc.SelectObject(font);
dc.SetBkColor(GetSysColor(COLOR_3DFACE));
dc.TextOut(0, 0, L"Hello world");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 2018-12-19
    • 2018-04-23
    • 2023-03-31
    相关资源
    最近更新 更多