毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

VC++数字逻辑电子仿真器设计 第5页

更新时间:2010-5-19:  来源:毕业论文
VC++数字逻辑电子仿真器设计 第5页
由于全局变量circlepoint保存的是元件内部的相对坐标,需要将它
    转换成视图中的坐标
 x=pNodeNow->Orgpoint .x +circlepoint.x;
 y=pNodeNow->Orgpoint .y +circlepoint.y;
     以上两句完成坐标的转换。
     然后以(x,y)为圆心,4为半径,画一个黑色小圆圈
dc.Ellipse (x-4,y-4,x+4,y+4)
 擦除小圆圈函数:EraserMyCircle()
void CMyView::EraserMyCircle()
{
 int x,y;
 x=pNodeNow->Orgpoint .x +circlepoint.x;
 y=pNodeNow->Orgpoint .y +circlepoint.y;
 
 CClientDC dc(this);
 CPen whitepen(PS_SOLID,1,RGB(255,255,255));
 CPen* pOldPen;
 pOldPen=dc.SelectObject (&whitepen);
 dc.Ellipse (x-4,y-4,x+4,y+4);
 dc.SelectObject (pOldPen);

 
}
与画小圆圈不同的是,擦除时要选择白色的笔和白色的画刷(默认)
CPen whitepen(PS_SOLID,1,RGB(255,255,255));
 CPen* pOldPen;
 pOldPen=dc.SelectObject (&whitepen);
以上3句选择白色的笔。
 鼠标移开触点重绘连接线函数:moveoutredrawline()
为什么需要这个函数,原因是在鼠标称出触点后,此时要擦除刚才画
的小圆圈,而如果此时已经生成了连接线,则会擦除掉连接线的一小部分。于是需要这个函数。
void CMyView::moveoutredrawline()
{
 int x,y;
 x=pNodeNow->Orgpoint .x +circlepoint.x;
 y=pNodeNow->Orgpoint .y +circlepoint.y;
 
 CPoint point1;
 CPoint point2;
 point1.x=x-4;
 point1.y=y-4;
 point2.x=x+4;
 point2.y=y+4;
 LinkLineRedraw(point1,point2);
}
此时pNodeNow指向刚擦除小圆圈的元件,而circlepoint则记录着
触点中心。于是只要将以ciclepoint为中心的半径为4的矩形的左上角点和右下角点为参数调用LinkLineRedraw即可。


 重绘元件函数redrawMyObject()
void CMyView::redrawMyObject(MyNode* pNode)
{
 switch(pNode->Subtype )
 {
 case ANDGate:
  DrawObject(pNode->Orgpoint ,IDB_ANDGATE);
  
  break;
 case ORGate:
  DrawObject(pNode->Orgpoint,IDB_ORGATE);
  
  break;
 case NOTGate:
  DrawObject(pNode->Orgpoint,IDB_NOTGATE);
  
  break;
 case NORGate:
  DrawObject(pNode->Orgpoint,IDB_NORGATE);
    break;
 case NANDGate:
  DrawObject(pNode->Orgpoint,IDB_NANDGATE);
  break;
 case XORGate:
  DrawObject(pNode->Orgpoint,IDB_XORGATE);
  
  break;
 case Input:
  DrawObject(pNode->Orgpoint,IDB_NODEINPUT);
  break;
 case Output:
  DrawObject(pNode->Orgpoint,IDB_NODEOUTPUT);  
  break; }}
该函数参数为指向元件的指针,用于重绘所指向的元件。
 鼠标按下模块如图5图5
   前面已经分析了放置元件状态,现在看连接元件状态中的判断:
“当前点是否在某个元件未连接的触点上”其实就是判断“可连接态”IsDrawCircle是否为真。代码如下:
  if(IsDrawCircle)//当前点在某个元件未连接的触点上
  {   //全局变量IsLink表示开始连接状态
   IsLink=TRUE;
   //全局变量pNodeStart记录当前物件
   pNodeStart=pNodeNow;
//全局变量startpoint记录当前触点中心坐标(注,此时要进行坐标转换
   startpoint.x=pNodeNow->Orgpoint .x +circlepoint.x;

上一页  [1] [2] [3] [4] [5] [6] [7] [8] 下一页

VC++数字逻辑电子仿真器设计 第5页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。