一開始,我的英語很抱歉。爲什麼我的鼠標光標座標突然縮放?
我現在正在學習如何在Visual Studio 2015中構建MFC應用程序。我使用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()' –
我不約的Direct2D,但在GDI有時它發生在我忘記轉換從設備座標到邏輯座標或反之亦然('CDC :: DPToLP'和'CDC :: LPToDP'方法)。我看到一個頁面 - http://d.hatena.ne.jp/sugarontop/20121006 - 不幸的是它不是英文的,可能有一些信息給你。 – sergiol
@DavidThomas我初始化時調用了這個函數,它看起來不像我的程序的原因。問題解決了,問題是我沒有轉換我的座標。謝謝! – Jacob