|
請問ERIC2013
BMP圖片是要從SD卡讀取 當作背景圖 再把BUTTON控件加在此背景圖上
如附圖 但是BUTTON卻無法顯示顏色(如左圖) 顯示了顏色卻無BMP背景圖(如右圖)
附上我的程序 請問要如何修改 謝謝你!
有BMP背景圖 但BUTTON無顏色
BUTTON有顏色 但無BMP背景圖
/*
*********************************************************************************************************
*
* Ä£¿éÃû3Æ : GUI½çÃæèÎÎñ
* ÎļtÃû3Æ : MainTask.c
* °æ ±¾ : V3.0
* Ëμ Ã÷ : GUI½çÃæÖ÷oˉêy£¬í¨1y±ß¶á±ßÏÔê¾μÄ·½ê½êμÏÖBMPí¼Æ¬ÏÔ꾡£
* DT¸Ä¼Ç¼ :
* °æ±¾oÅ èÕÆú ×÷Õß ËμÃ÷
* V1.0 2013-03-26 Eric2013 °æ±¾emWin5.16
* V2.0 2014-02-23 Eric2013 °æ±¾STemWin5.22
* V3.0 2015-04-08 Eric2013 1. éy¼¶1ì¼t¿aμ½V1.5.0
* 2. éy¼¶BSP°å¼¶Ö§3Ö°ü
* 3. éy¼¶fatfsμ½0.11
* 4. éy¼¶STemWinμ½5.26
* 5. ¸ü¸ÄÎaDÂμÄËÄμã′¥ÃtD£×¼Ëã·¨£¬2¢ÖØ2é±àÅÅ′¥Ãt¼ì2aèÎÎñ
* 6. ìí¼ó7′ç800*480·Ö±æÂêμçèYÆáÖ§3Ö£¬ìí¼ó3.5′ç480*320μÄILI9488Ö§3Ö¡£
* 7. DT¸Ä¶Ô»°¿òÏÔê¾′óD¡1춨Îa480*272£¬òÔ′Ëà′êêó|ËùóDÆá¡£
* 8. ÖØDÂÕûàí×¢êí£¬ê1Æä¸ü¼ó1æ·¶¡£
*
* Copyright (C), 2015-2020, °2¸»à3μç×ó www.armfly.com
*
*********************************************************************************************************
*/
#include "includes.h"
#include "MainTask.h"
#include "WM.h"
#include "BUTTON.h"
#include "CHECKBOX.h"
#include "DROPDOWN.h"
#include "EDIT.h"
#include "FRAMEWIN.h"
#include "LISTBOX.h"
#include "MULTIEDIT.h"
#include "RADIO.h"
#include "SLIDER.h"
#include "TEXT.h"
#include " ROGBAR.h"
#include "SCROLLBAR.h"
#include "LISTVIEW.h"
/* êμ¼êμÄ2aêÔDèòaêÇí¼Ïñ¿í¶èμÄ4±¶¼′¿é£¬ÇD¼Ç(ò2¾íêDZ£֤ÿ¸öÏñËØèç1ûêÇ32λêy¾YμÄÇé¿ö) */
static char _acBuffer[480*4];
/*********************************************************************
*
* Dialog resource
*
* This table conatins the info required to create the dialog.
* It has been created by ucGUIbuilder.
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
// { FRAMEWIN_CreateIndirect, "BTN_IMAGE",0,0,0,800,4800,FRAMEWIN_CF_MOVEABLE,0},
{ BUTTON_CreateIndirect, "START", GUI_ID_BUTTON0, 297,130,200,100,0,0}
};
/*****************************************************************
** FunctionName:void PaintDialog(WM_MESSAGE * pMsg)
** Function: to initialize the Dialog items
**
** call this function in _cbCallback --> WM_PAINT
*****************************************************************/
void PaintDialog(WM_MESSAGE * pMsg)
{
WM_HWIN hWin = pMsg->hWin;
}
/*****************************************************************
** FunctionName:void InitDialog(WM_MESSAGE * pMsg)
** Function: to initialize the Dialog items
**
** call this function in _cbCallback --> WM_INIT_DIALOG
*****************************************************************/
void InitDialog(WM_MESSAGE * pMsg)
{
WM_HWIN hWin = pMsg->hWin;
//
//FRAMEWIN
//
FRAMEWIN_SetClientColor(hWin,0xff0000);
FRAMEWIN_SetFont(hWin,&GUI_Font16B_ASCII);
FRAMEWIN_SetTextAlign(hWin,GUI_TA_VCENTER|GUI_TA_CENTER);
FRAMEWIN_AddCloseButton(hWin, FRAMEWIN_BUTTON_RIGHT, 0);
FRAMEWIN_AddMaxButton(hWin, FRAMEWIN_BUTTON_RIGHT, 1);
FRAMEWIN_AddMinButton(hWin, FRAMEWIN_BUTTON_RIGHT, 2);
FRAMEWIN_SetTitleHeight(hWin,16);
//
//GUI_ID_BUTTON0
//
BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,0x00c000);
BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_PRESSED,0xc0ffc0);
BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),&GUI_Font24B_ASCII);
}
/*********************************************************************
*
* Dialog callback routine
*/
static void _cbCallback(WM_MESSAGE * pMsg)
{
int NCode, Id;
WM_HWIN hWin = pMsg->hWin;
switch (pMsg->MsgId)
{
case WM_PAINT:
PaintDialog(pMsg);
break;
case WM_INIT_DIALOG:
InitDialog(pMsg);
break;
case WM_KEY:
switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
{
case GUI_KEY_ESCAPE:
GUI_EndDialog(hWin, 1);
break;
case GUI_KEY_ENTER:
GUI_EndDialog(hWin, 0);
break;
}
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch (Id)
{
case GUI_ID_OK:
if(NCode==WM_NOTIFICATION_RELEASED)
GUI_EndDialog(hWin, 0);
break;
case GUI_ID_CANCEL:
if(NCode==WM_NOTIFICATION_RELEASED)
GUI_EndDialog(hWin, 0);
break;
case GUI_ID_BUTTON0:
switch(NCode)
{
case WM_NOTIFICATION_CLICKED:
// OnButtonClicked(pMsg);
break;
case WM_NOTIFICATION_RELEASED:
// OnButtonReleased(pMsg);
break;
case WM_NOTIFICATION_MOVED_OUT:
// OnButtonMovedOut(pMsg);
break;
}
break;
}
break;
default:
WM_DefaultProc(pMsg);
}
}
/*
*********************************************************************************************************
* oˉ êy Ãû: _GetData
* 1|ÄüËμÃ÷: ±»oˉêyGUI_BMP_DrawEx()μ÷óÃ
* DÎ 2Σop FILààDíêy¾Y
* NumBytesReq ÇëÇó¶áè¡μÄ×Ö½úêy
* ppData êy¾YÖ¸Õë
* Off èç1ûOff = 1£¬ÄÇÃ′½«ÖØDÂ′óÆäêμλÖöáè¡
* ·μ »Ø Öμ: ·μ»Ø¶áè¡μÄ×Ö½úêy
*********************************************************************************************************
*/
static int _GetData(void * p, const U8 ** ppData, unsigned NumBytesReq, U32 Off)
{
static int FileAddress = 0;
UINT NumBytesRead;
FIL *PicFile;
PicFile = (FIL *)p;
/*
* ¼ì2a»o′æ′óD¡
*/
if (NumBytesReq > sizeof(_acBuffer)) {
NumBytesReq = sizeof(_acBuffer);
}
/*
* éèÖöáè¡Î»ÖÃ
*/
if(Off == 1) FileAddress = 0;
else FileAddress = Off;
result =f_lseek(PicFile, FileAddress);
/*
* ¶áè¡êy¾Yμ½»o′æ
*/
result = f_read(PicFile, _acBuffer, NumBytesReq, &NumBytesRead);
/*
* èÃÖ¸ÕëppDataÖ¸Ïò¶áè¡μÄoˉêy
*/
*ppData = (const U8 *)_acBuffer;
/*
* ·μ»Ø¶áè¡μÄ×Ö½úêy
*/
return NumBytesRead;
}
/*
*********************************************************************************************************
* oˉ êy Ãû: _ShowBMPEx
* 1|ÄüËμÃ÷: ÏÔê¾BMPí¼Æ¬
* DÎ 2ΣosFilename òaÏÔê¾í¼Æ¬μÄÃû×Ö
* ·μ »Ø Öμ: ÎT
*********************************************************************************************************
*/
static void _ShowBMPEx(const char * sFilename)
{
OS_ERR err;
/* ′ò¿aÎļt */
result = f_open(&file, sFilename, FA_OPEN_EXISTING | FA_READ | FA_OPEN_ALWAYS);
if (result != FR_OK)
{
return;
}
// XSize = GUI_BMP_GetXSizeEx(_GetData, &file);
// YSize = GUI_BMP_GetYSizeEx(_GetData, &file);
OSSchedLock(&err);
GUI_BMP_DrawEx(_GetData, &file, 0, 0);
OSSchedUnlock(&err);
f_close(&file);
}
/*
*********************************************************************************************************
* oˉ êy Ãû: MainTask
* 1|ÄüËμÃ÷: GUIÖ÷oˉêy
* DÎ 2ΣoÎT
* ·μ »Ø Öμ: ÎT
*********************************************************************************************************
*/
/*********************************************************************
*
* MainTask
*
**********************************************************************
*/
void MainTask(void)
{
GUI_Init();
//WM_SetDesktopColor(GUI_WHITE); /* Automacally update desktop window */
WM_SetCreateFlags(WM_CF_MEMDEV); /* Use memory devices on all windows to avoid flicker */
//PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
//FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
//PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
//BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
//CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);
//DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
//SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
//SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
//HEADER_SetDefaultSkin(HEADER_SKIN_FLEX);
//RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);
_ShowBMPEx("SKY3.bmp");
GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
while(1)
{
GUI_Delay(200);
}
} |
|