OpenEdv-开源电子网

标题: emwin 表盘 [打印本页]

作者: ucgui    时间: 2015-4-16 22:10
标题: emwin  表盘
建立一个对话框 想在其中加入一个旋转的指针  可是写好函数后直接引用出不来   回调函数那里怎么处理啊  能实现这个功能吗

不知道有没有人做过这个   请大家帮忙看看   谢谢了


#define ID_WINDOW_0    (GUI_ID_USER + 0x01)

#define countof(Obj) (sizeof(Obj) / sizeof(Obj[0]))
#define DEG2RAD      (3.1415926f / 180)
#define MAG         4

static  const GUI_POINT _aNeedle_0[] = {
  { MAG * ( 0), MAG * (  0 )},
  { MAG * (-3), MAG * (10 )},
  { MAG * (-3), MAG * (60)},
  { MAG * ( 3), MAG * (60 )},
  { MAG * ( 3), MAG * (10 )},
};

typedef struct {
  GUI_AUTODEV_INFO AutoDevInfo;
  GUI_POINT aPoints[7];        
float Angle;
} PARAM;


void _Draw_0(void * p) {
  PARAM * pParam = (PARAM *)p;  

  GUI_SetColor(GUI_RED);  

  GUI_AA_FillPolygon(pParam->aPoints, countof(_aNeedle_0), MAG * 150,  MAG * 180);

}

void GUIDEMO_A(void) {
int t0=27000 ;

  PARAM Param;            
  GUI_AUTODEV AutoDev;    
  GUI_MEMDEV_Handle hMem;
 
  GUI_AA_EnableHiRes();    
  GUI_AA_SetFactor(MAG);  


  GUI_MEMDEV_CreateAuto(&AutoDev);
 
while (1) 
{

t0-= 100;
if(t0 < 17000)
{
t0 = 27000;
}

Param.Angle= t0; 
Param.Angle *= 3.1415926f / 18000;  
GUI_RotatePolygon(Param.aPoints, _aNeedle_0, countof(_aNeedle_0), Param.Angle);
GUI_MEMDEV_DrawAuto(&AutoDev, &aram.AutoDevInfo, _Draw_0, &aram);

  
}

}

static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {

  { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 800, 480, 0, 0x64, 0 },

};



static void _cbDialog(WM_MESSAGE * pMsg) {


  switch (pMsg->MsgId) {

case WM_PAINT:


 break;
 
case WM_NOTIFY_PARENT:
GUIDEMO_A();

break;
  default:
    WM_DefaultProc(pMsg);

  }
}




void MainTask(void) 
{
/* 初始化并创建对话框 */
GUI_Init();

WM_SetCreateFlags(WM_CF_MEMDEV);

  hWinMain= GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);

while(1)
{
GUI_Delay(20);
}
}





作者: 正点原子    时间: 2015-4-16 23:31
帮顶。。。。
作者: ucgui    时间: 2015-4-17 10:36
有没有人做过类似的指点一下啊
作者: jermy_z    时间: 2015-4-17 12:41
emwin例程里就有表盘  参照那个吧
作者: ucgui    时间: 2015-4-17 14:08
回复【4楼】jermy_z:
---------------------------------
那个只是单纯的一个表盘  已经可以实现  但是在窗口或者对话框中就不知道怎么实现了    回调函数那里不会写
作者: ucgui    时间: 2015-4-17 21:28
自己发的帖  跪着也要顶起来
作者: Qlin    时间: 2015-4-20 11:42
_Draw_0()前景和背景没有去处理
作者: ucgui    时间: 2015-4-21 22:08
回复【7楼】Qlin:
---------------------------------
前景背景这个倒是后面好加入,现在的问题是怎样实现指针旋转 ,其他的之后加上去就行
作者: Qlin    时间: 2015-4-22 18:01
回复【8楼】ucgui:
---------------------------------
你要先加上前景和背景啊,在任务先算好指针的旋转的角度,然后在_Draw_0()中绘制指针,如果你前景和背景有的话,没有加入,什么后果,你自己看看咯,emwin例程里就有表盘  参照那个吧
作者: lumilu    时间: 2018-5-4 08:45
兄弟,你那个问题解决了没有?
作者: 晨曦的love    时间: 2018-5-4 18:20
帮顶,最近我也在搞emwin呢





欢迎光临 OpenEdv-开源电子网 (http://47.111.11.73/) Powered by Discuz! X3.4