2016-01-29 2 views
0

Я рисую входящие данные в элементе управления изображением. Есть ли прямой способ изменить разрешение, чтобы у меня была более плотная сетка пикселей для воспроизведения? Я бы предпочел не иметь дело с любым файлом IO, потому что меня нажимают на время выполнения. Диалог вокруг управления изображением, похоже, имеет более высокое разрешение.MFC Picture Control

Прошу прощения за явное отсутствие информации, которую я изначально предоставил, так как я не уверен, что именно народный. Ниже приведен фрагмент кода, который используется в функции OnPaint().

//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 нет элегантного решения, и все остальное, что я нашел в Интернете, было похоже на накладные расходы. Я не эксперт, если у вас есть другое предположение, что я открыт. Что касается резолюции, текст вокруг этого элемента управления в моем пользовательском интерфейсе, по-видимому, имеет более точное разрешение. Мне было просто любопытно, могу ли я контролировать разрешение внутри элемента управления изображением. Это позволило бы мне более четко отображать 1200 точек данных. enter image description here

+1

Мой непосредственный совет должен был бы просто не использовать контроль изображения. Особенно, если вам интересно время исполнения, есть много альтернатив, которые, вероятно, работают лучше. Например: http://www.codeproject.com/Articles/15694/Realtime-Chart-and-Graph-in-One –

+0

Я смущен, почему вы думаете, что проект, на который вы ссылаетесь, является более легким, чем рисование линий в Пиксели? – bluebass44

+1

Не совсем ясно, какие типы графиков вы пытаетесь отобразить, как вы их рендерите, конкретное преимущество, которое вы надеетесь получить от повышенного разрешения, или почему окружающий рендеринг имеет более высокое разрешение. Предполагаю, что вы подвергаетесь алиасированию артефактов, происходящих из целочисленной арифметики. Пожалуйста, покажите код, который, по вашему мнению, приведет к нежелательным результатам. – IInspectable

ответ

1

Вы не можете улучшить какие-либо улучшения с растровыми изображениями или увеличением растрового изображения. Лучшей альтернативой является предоставление пользователю большего контроля над графиком, например, вставка нескольких элементов управления ползунком.

Один слайдер изменяет смещение по оси x, например, он позволяет оси x начинать с нуля или начинать с 50. Другой слайдер изменяет масштаб. Например, ось x может быть изменена на переход от (от 0 до 100) или (от 0 до 1000)

Чтобы сделать график более интересным, включите современный интерфейс пользователя, добавив эту строку в основной файл * .cpp:

#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"); 
Смежные вопросы