さらに描画のおはなし - 1 / 2 -
static void Graphix_UseIGraphicsAndIDisplay(GraphixApplet* app)
{
IGraphics* graphics = app->g;
IShell* shell = app->a.m_pIShell;
IDisplay* display = app->a.m_pIDisplay;
IBitmap* bmp;
AEEClip clip;
AEECircle circle;
const AECHAR str[] = {'B','R','E','W',' ','B','R','E','W',' ','B','R','E','W','\0'};
// 画面を緑色でクリア
IGRAPHICS_SetBackground(graphics,0xCC,0xFF,0xCC);
IGRAPHICS_ClearViewport(graphics);
// クリッピング領域を四角形に設定
clip.type = CLIPPING_RECT;
clip.shape.rect.x = 20;
clip.shape.rect.y = 20;
clip.shape.rect.dx = 80;
clip.shape.rect.dy = 80;
IGRAPHICS_SetClip(graphics,&clip,0);
IDISPLAY_SetClipRect(display,&clip.shape.rect);
// リソース ファイルからビットマップを取得
bmp = ISHELL_LoadResBitmap(shell,GRAPHIX_RES_FILE,TILE);
if (bmp != NULL) {
// ビットマップを描画
IDISPLAY_BitBlt(display,0,0,100,100,bmp,0,0,AEE_RO_COPY);
// ビットマップ破棄
IBITMAP_Release(bmp);
}
// 塗り潰しモードを設定
IGRAPHICS_SetFillMode(graphics,TRUE);
// 描画色を青色に設定
IGRAPHICS_SetColor(graphics,0x88,0x88,0xFF,0x00);
IGRAPHICS_SetFillColor(graphics,0xCC,0xCC,0xFF,0x00);
// 円を描画
circle.cx = 80;
circle.cy = 70;
circle.r = 40;
IGRAPHICS_DrawCircle(graphics,&circle);
// 文字色を黒色に設定
IDISPLAY_SetColor(display,CLR_USER_TEXT,MAKE_RGB(0x00,0x00,0x00));
// 文字列を描画
IDISPLAY_DrawText(display,AEE_FONT_NORMAL,str,-1,0,55,NULL,IDF_TEXT_TRANSPARENT);
IDISPLAY_DrawText(display,AEE_FONT_NORMAL,str,-1,20,70,NULL,IDF_TEXT_TRANSPARENT);
// クリッピング領域をリセット
IGRAPHICS_SetClip(graphics,NULL,0);
IDISPLAY_SetClipRect(display,NULL);
// 画面更新
IGRAPHICS_Update(graphics);
IDISPLAY_Update(display);
return;
}