|
GUI_SetBkColor(get_bk_color());
GUI_RECT _rect = rect_channel[ch];
//GUI_SetClipRect(&_rect);
(*channel_show[ch])(ch, rect_channel[ch]);
//GUI_SetClipRect(NULL);
。。。。
void cb_TEXT_pressure_image(GUI_RECT *rect, uint8_t ch)
{
extern GUI_CONST_STORAGE GUI_BITMAP bmpointer;
extern GUI_CONST_STORAGE GUI_BITMAP bmpressure_bk;
uint8_t mode = channel_param[ch]->pressure_mode;
uint8_t unit = channel_param[ch]->pressure_unit;
double range, pressure, angle;
range = get_pressure_range(ch, 0, mode); // kpa
pressure = get_pressure_value_kpa(ch);
if (pressure < 0)
pressure = 0;
angle = pressure * 150.0 / range;
if (angle > 180.0)
angle = 180.0;
static GUI_MEMDEV_Handle hMem2 = 0;
static GUI_MEMDEV_Handle hMem = 0;
if (hMem2 == 0)
{
hMem2 = GUI_MEMDEV_CreateFixed32(
0, 0, bmpointer.XSize, bmpointer.YSize);
GUI_MEMDEV_Select(hMem2);
GUI_SetBkColor(0x0);
// GUI_SetBkColor(get_box_color());
GUI_Clear();
GUI_DrawBitmap(&bmpointer, 0, 0);
GUI_MEMDEV_Select(0);
}
if (hMem == 0)
{
hMem = GUI_MEMDEV_CreateFixed32(0, 0, bmpressure_bk.XSize, bmpressure_bk.YSize + 3);
}
GUI_MEMDEV_Select(hMem);
GUI_SetBkColor(get_box_color());
GUI_Clear();
GUI_DrawBitmap(&bmpressure_bk, 0, 0);
GUI_MEMDEV_RotateHQHR(hMem2, hMem, 0, 0, -angle * 1000, 1 * 1000);
GUI_SetColor(get_font_color());
GUI_SetFont(USER_FONT_14_ASCII);
char buff[32] = {0};
double val = get_pressure_value(ch, unit);
if (val < 0)
val = 0;
if (unit == PRESSURE_UNIT_KPA || unit == PRESSURE_UNIT_MMHG)
{
sprintf(buff, "%d", (int)(val));
}
else
{
sprintf(buff, "%.1f", val);
}
GUI_RECT tmp;
tmp.x0 = 23;
tmp.x1 = tmp.x0 + 20;
tmp.y0 = 29;
tmp.y1 = tmp.y0 + 10;
GUI_DispStringInRect(buff, &tmp, GUI_ALIGN_CENTER);
GUI_MEMDEV_Select(0);
GUI_MEMDEV_WriteAt(hMem, rect->x0 + 28, rect->y0 + 25);
// GUI_MEMDEV_WriteAt(hMem, rect->x0, rect->y0);
// GUI_MEMDEV_Delete(hMem);
}
测试屏蔽剪裁区域设置后,内存设备显示正常,这是不能这么用吗?
|
|