Рисование линий с использованием Device Context над объектом CImage

Я создаю приложение MFC c ++, в котором я позволяю пользователю читать изображение, рисовать на нем линии, а затем сохранять его.

поэтому у меня есть объект «CImage», который называется «Image», в который пользователь загружает изображение.

и у меня есть объект контекста устройства, и я смог нарисовать линии на нем
объект контекста устройства, который во время выполнения с использованием обработчиков событий «OnLButtonDown» и «OnLButtonUp».

Затем я позволяю пользователю сохранить изображение, используя «CImage.save». Изображение сохранено, но в контексте устройства нет нарисованных линий, чего и следовало ожидать.
но я хочу, чтобы они появились в сохраненном изображении ..

Вопрос заключается в том, как я могу получить объект контекста устройства, чтобы повлиять на мой объект CImage?

это обработчик события для нажатия кнопки мыши

void CProFilterDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
curser =point;
if (draw && Boundry.PtInRect(point) )
{
CDialogEx::OnLButtonDown(nFlags, point);
}

}

и этот, когда кнопка мыши нажата

void CProFilterDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
if (draw && Boundry.PtInRect(curser) && Boundry.PtInRect(point))
{
CClientDC dc(this);
dc.MoveTo(curser);
dc.LineTo(point);
CDialogEx::OnLButtonUp(nFlags, point);
}}

это где я загружаю свой объект Cimage

void CProFilterDlg::OnBnClickedBtnBrowse()
{
CFileDialog Browse(true);
if(Browse.DoModal() == IDOK)
{
ImagePath = Browse.GetPathName();
}

image.Load(ImagePath);
}

и это где я сохраняю мой CImage

void CProFilterDlg::OnBnClickedSave()
{
CFileDialog Save(true);
if(Save.DoModal() == IDOK)
{
ImagePath = Save.GetPathName();
}
image.Save(ImagePath,Gdiplus::ImageFormatBMP);
}

0

Решение

Судя по тому, что вы показали, вы используете не тот DC. Вы, кажется, используете DC для диалога (т.е. CCLientDC) и не фактический CImage. Вы должны строить DC из

CImage :: GetDC ().

Этот DC будет иметь текущее выбранное растровое изображение.

0

Другие решения

Вы ищете CImage: BitBlt? Он используется для копирования растрового изображения из исходного контекста устройства в текущий контекст устройства.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector