Вначале извините за мой английский.
Сейчас я учусь создавать приложение MFC в Visual Studio 2015. Я использую Direct2D для рисования линий в окне.
Когда левая кнопка нажата, вызывается моя функция OnLbuttonDown ():
void CMyProjectNameView::OnLButtonDown(UINT nFlags, CPoint point)
{
startPoint = point; // start point of the line, a gloable variable.
pRenderTarget->BeginDraw();
CView::OnLButtonDown(nFlags, point);
}
Когда левая кнопка нажата, вызывается моя функция OnLButtonUp ():
void CMyProjectNameView::OnLButtonUp(UINT nFlags, CPoint point)
{
pRenderTarget->DrawLine(startPoint, point, m_pbrush, 1.0f); // draw the line
pRenderTarget->EndDraw();
CView::OnLButtonUp(nFlags, point);
}
Таким образом, он будет рисовать линию в окне, когда я перетаскиваю мышь, и вчера он работал нормально.
Проблема в том, что когда я запускаю его сегодня, он вдруг стал ненормальным. Координаты начальной и конечной точек в два раза больше, чем раньше. Итак, когда я рисую линию, она отображается в правом нижнем углу по сравнению с положением, которое она должна была быть.
Например, если я проведу линию от (100,100) до (500,500), на экране появится линия, начинающаяся с (100,100) до (500,500), но когда я нажму левой кнопкой мыши на (100,100), переместите ее в (500,500) и отпустите левую кнопку, будет нарисована линия от (200,200) до (1000,1000).
OnLButtonDown(UINT nFlags, CPoint point)
OnLButtonUp(UINT nFlags, CPoint point)
Итак, по сути, эти два пункта выше масштабируются перед их передачей. Могу ли я случайно изменить какие-либо конфигурации? Есть ли способ исправить это? Я уверен, что не менял свой код.
SetTransform()
- person David Thomas   schedule 08.07.2016CDC::DPToLP
иCDC::LPToDP
methods). Я видел страницу - d.hatena.ne.jp/sugarontop/20121006 - к сожалению, он не на английском языке, поэтому здесь может быть некоторая информация для вас. - person sergiol   schedule 08.07.2016