VDF常見問題整理(五):如何更改視圖旋轉(zhuǎn)的方式?
VectorDraw Developer Framework(VDF)是一個(gè)用于應(yīng)用程序可視化的圖形引擎庫(kù)。有了VDF提供的功能,您可以輕松地創(chuàng)建、編輯、管理、輸出、輸入和打印2D和3D圖形文件。
VectorDraw Developer Framework試用版下載
問:
是否能夠在轉(zhuǎn)動(dòng)圓圈的情況下,在View3D VROT中更改視圖旋轉(zhuǎn)的方式?
答:
可以通過覆蓋VectorDrawBaseControl的vdKeyDown事件來完成。
例:
(假設(shè)我們?cè)诒韱慰丶现刑砑恿艘粋€(gè)帶有vdFramedControl的表單)
在以下示例中:
-
當(dāng)用戶按住Alt鍵,按左箭頭鍵或右箭頭鍵時(shí),視圖將在活動(dòng)視圖的Y軸上旋轉(zhuǎn)。
-
當(dāng)用戶按住Alt鍵,按下向上或向下箭頭鍵時(shí),視圖將在活動(dòng)視圖的X軸上旋轉(zhuǎn)。
-
當(dāng)用戶按住控制鍵的同時(shí)按下左箭頭鍵或右箭頭鍵時(shí),視圖將在活動(dòng)視圖的Z軸上旋轉(zhuǎn)。
private void Form1_Load(object sender, EventArgs e) { vdFramedControl.BaseControl.vdKeyDown += new VectorDraw.Professional.Control.KeyDownEventHandler(BaseControl_vdKeyDown); } void BaseControl_vdKeyDown(KeyEventArgs e, ref bool cancel) { BaseAction action = doc.ActiveLayOut.OverAllActiveAction; if(action == null) return; Matrix curmat = new Matrix( action.Render.CurrentMatrix); bool done = false; if (e.Alt && e.KeyCode == Keys.Left) { curmat.RotateYMatrix(Globals.VD_PI_OVER_180 * 10 * 1.0d); done = true; } else if (e.Alt && e.KeyCode == Keys.Right) { curmat.RotateYMatrix(Globals.VD_PI_OVER_180 * 10 * -1.0d); done = true; } else if (e.Alt && e.KeyCode == Keys.Up) { curmat.RotateXMatrix(Globals.VD_PI_OVER_180 * 10 * 1.0d); done = true; } else if (e.Alt && e.KeyCode == Keys.Down) { curmat.RotateXMatrix(Globals.VD_PI_OVER_180 * 10 * -1.0d); done = true; } else if (e.Control && e.KeyCode == Keys.Left) { curmat.RotateZMatrix(Globals.VD_PI_OVER_180 * 10 * -1.0d); done = true; } else if (e.Control && e.KeyCode == Keys.Right) { curmat.RotateZMatrix(Globals.VD_PI_OVER_180 * 10 * 1.0d); done = true; } if (!done) return; action.Render.CurrentMatrix = curmat; doc.Redraw(true); cancel = true; }