cppfl::BitmapWindow
とりあえず絵とか表示するのに便利なクラスです. BASIC感覚でお絵かきできます.
基本的にPenというインターフェイスを使ってグラフィックを描写します (BitmapWindowはPenを多重継承しているので,わざわざ作らなくて良いですが).
サンプル
#include "cppfl/all.h"
BitmapWindow window("Sample app",640,480);
PenEx p;
void onbutton(Widget *w,int d) {
p.clear();
p.text(STR "ボタンが押されました"+d);
}
void onendbutton(Widget *w,int d) {
w->parent().close();
}
int main(int argc,char **argv) {
// ボタン準備
Button button1("ボタン1",1,onbutton);
Button button_e("Exit",3,onendbutton);
// 画面に配置
window.add(button1,200,100);
window.add(button_e);
p.select(window);
p.text("Hello, world!");
p.color(Color::red);
p.text(STR 123+"あああ"+"いいいa");
p.color(Color::green);
p.box(20,32,100,100);
p.box(100,120,200,230,true);
p.line(0,40,200,100);
p.color(0,255,255);
p.circle(300,200,100,true);
int x=100,y=100,dx=1,dy=2;
while (window.isexist()) {
// 古い円を消す
p.color(Color::white);
p.circle(x,y,10,true);
// 移動
x+=dx;
y+=dy;
if (y<10 || y>=window.dib->height-10) dy=-dy,y+=dy;
if (x<10 || x>=window.dib->width-10) dx=-dx,x+=dx;
// 円を描画
p.color(Color::red);
p.circle(x,y,10,true);
if (System::keydown(VK_ESCAPE)) break;
wait(10);
}
return 0;
}

メソッド
FormとPenを継承して内部にDIBitmapを持っています.
- color(r,g,b) 色設定
- line(x1,y1, x2,y2) 線分
- box(x1,y1, x2,y2) 四角形
- boxf(x1,y1, x2,y2) 塗りつぶされた四角形
- circle(x,y,r) 円
- circlef(x,y,r) 塗りつぶされた円
- print(s) 文字列の表示
- move(x,y) カレントポジションの移動
コンストラクタ(width, height, title)
BitmapWindow bw(640, 480, "test");
640x480のウインドウを作ります.タイトルは「test」
color(r, g, b) color(Color)
色指定.
bw.color(255, 0, 0);
bw.color(Color::red);
bw.color(0x0000ff);
上の3行は同じ意味です. 定義済みの色は8色しかないですが,必要になったら増やします.
print(s)
文字列を表示します.改行もできます.
bw.print("Hello, world!");
位置を指定したい場合は,前もってmoveしてください.
update() 画面の更新
内部のビットマップをウインドウに反映させます
- bw.update(false) 自動更新OFF(これ以降の描画が高速になります)
- bw.update(true) 自動更新ON
- bw.update() 更新する