MQCanvasクラス

(new in Rev4.02)

MQCanvas クラスは描画イベント時にMQWidgetPaintParam構造体内に格納され、このクラスを通じて画面への各図形の描画を行います。

クラス
MQCanvas コンストラクタ
~MQCanvas デストラクタ
メンバ関数
GetBitmap オフスクリーン用ビットマップバッファの取得
GetCanvasRect 描画領域の取得
SetColor 描画色の設定
SetGradientColor グラデーション色の設定
SetStrokeWidth 線の描画幅の設定
SetStrokeCap 線の端の描画方法の設定
SetStrokeJoin 折れ線の継ぎ目の描画方法の設定
SetStrokeMiterLimit マイター限界の設定
SetStrokeDash 点線の設定
SetFont フォントの設定
SetFontSize フォントのサイズの設定
SetFontRateSize フォントのサイズ比率の設定
SetAntiAlias アンチエイリアスの設定
PushClipRect クリップ範囲の設定
PopClipRect クリップ範囲の解除
Clear キャンバス全体の消去
DrawLine 直線の描画
DrawPolyline 折れ線の描画
DrawCircle 円の描画
FillCircle 円の塗りつぶし
DrawEllipse 楕円の描画
FillEllipse 楕円の塗りつぶし
DrawRect 長方形の描画
FillRect 長方形の塗りつぶし
DrawRoundRect 角の丸い長方形の描画
FillRoundRect 角の丸い長方形の塗りつぶし
DrawPolygon 多角形の描画
FillPolygon 多角形の塗りつぶし
DrawDIB ビットマップの描画
DrawSVG SVGファイルの描画
DrawText 文字列の描画
MeasureText 文字列の描画サイズの計算

MQCanvas::MQCanvas(void *ptr);

MQCanvas::MQCanvas(int x1, int y1, int x2, int y2);

ptr
プラグイン外で生成されたウィジェットのID
x1
左上のX座標
y1
左上のY座標
x2
横幅
y2
縦幅

コンストラクタです。

直接呼び出す必要はありません。SDK内で生成されたものが渡されます。

(new in Rev4.60)

x1,y1,x2,y2はオフスクリーン用のMQCanvasのパラメータです。


MQCanvas::~MQCanvas();

デストラクタです。


void MQCanvas::GetBitmap(unsigned char*& buffer, size_t& row_bytes);

buffer
ビットマップバッファ
row_bytes
1行あたりのバイト数

(new in Rev4.60)

オフスクリーン用のビットマップバッファを取得します。


void MQCanvas::GetCanvasRect(int& x, int& y, int& width, int& height);

x
左上のX座標
y
左上のY座標
width
横幅
height
縦幅

(new in Rev4.60)

描画領域を取得します。


void MQCanvas::SetColor(int r, int g, int b, int a);

void MQCanvas::SetColor(const MQCanvasColor& col);

r
赤 (0~255)
g
緑 (0~255)
b
青 (0~255)
a
不透明度 (0~255)

各描画関数で使用される色を設定します。


void MQCanvas::SetGradientColor(int x1, int y1, int x2, int y2, const std::vector<MQCanvasColor>& colors, const std::vector<float>& segments);

void MQCanvas::SetGradientColor(float x1, float y1, float x2, float y2, const std::vector<MQCanvasColor>& colors, const std::vector<float>& segments);

x1
始点X座標
y1
始点Y座標
x2
終点X座標
y2
終点Y座標
colors
segments
始点から終点までの位置比率 (0~1)

各描画関数で使用される色を始点から終点まで変移するグラデーションとして設定します。

SetColor()を呼び出すとグラデーション描画は解除されます。


void MQCanvas::SetStrokeWidth(float width);

width
線幅

線の描画幅を設定します。


void MQCanvas::SetStrokeCap(MQCANVAS_CAP_TYPE cap);

cap
端の描画
[MQCanvas::CAP_BUTT] 端の点からはみ出さない
[MQCanvas::CAP_ROUND] 端の点から丸くはみ出す
[MQCanvas::CAP_SQUARE] 端の点から四角にはみ出す

線の端の描画方法を設定します。


void MQCanvas::SetStrokeJoin(MQCANVAS_JOIN_TYPE join);

join
継ぎ目の描画
[MQCanvas::JOIN_MITER] 継ぎ目の外側をとがらせる
[MQCanvas::JOIN_ROUND] 継ぎ目の外側を丸くする
[MQCanvas::JOIN_BEVEL] 継ぎ目の外側を凹ます

折れ線の継ぎ目の描画方法を設定します。


void MQCanvas::SetStrokeMiterLimit(float limit);

limit
マイター限界

折れ線の継ぎ目の描画方法にマイターが指定されているときのマイター限界を設定します。


void MQCanvas::SetStrokeDash(const std::vector<float>& intervals);

intervals
点線の間隔

線を点線として描画するときの線の長さと隙間を設定します。

点線描画を終了するときは空の配列を渡してください。


void MQCanvas::SetFont(const wchar_t *fontname, bool bold);

fontname
フォント名
bold
太字

文字を描画するフォントを設定します。

フォント名はシステムに存在するものを、また描画する文字コードに対応するフォントを指定してください。存在しないフォントが指定されたり、フォントが対応していない文字コードが描画された場合、描画は正常に行われません。


void MQCanvas::SetFontSize(int size);

size
サイズ

文字を描画するフォントのサイズを設定します。


void MQCanvas::SetFontRateSize(float rate);

rate
サイズ比率

文字を描画するフォントのサイズを標準フォントサイズに対する比率で設定します。


void MQCanvas::SetAntiAlias(bool val);

val
アンチエイリアス

アンチエイリアスを有効にして描画するかどうかを設定します。


void MQCanvas::PushClipRect(int x, int y, int w, int h);

x
左上のX座標
y
左上のY座標
w
横幅
h
縦幅

クリッピング範囲を設定します。

クリッピング範囲が設定されると、その範囲外への描画は行われません。

描画が終わった後は必ずPopClipRect()でクリッピング範囲を元に戻してください。PushClipRect()が複数回呼び出された場合は、PopClipRect()を同じ回数呼び出す必要があります。


void MQCanvas::PopClipRect();

PushClipRect()で設定されたクリッピング範囲を元に戻します。


void MQCanvas::Clear(int r, int g, int b, int a);

void MQCanvas::Clear(const MQCanvasColor& col);

r
赤 (0~255)
g
緑 (0~255)
b
青 (0~255)
a
不透明度 (0~255)

キャンバス全体を指定した色で塗りつぶします。


void MQCanvas::DrawLine(int x1, int y1, int x2, int y2);

void MQCanvas::DrawLine(float x1, float y1, float x2, float y2);

x1
始点のX座標
y1
始点のY座標
x2
終点のX座標
y2
終点のY座標

指定した2点間を結ぶ直線を描画します。


void MQCanvas::DrawPolyline(POINT *points, int num_points);

void MQCanvas::DrawPolyline(MQCanvasPoint *points, int num_points);

points
点の配列
num_points
点の数

指定した点間を結ぶ折れ線を描画します。


void MQCanvas::DrawCircle(int x, int y, float r);

void MQCanvas::DrawCircle(float x, float y, float r);

x
中心のX座標
y
中心のY座標
r
半径

指定した中心位置から指定した半径の円を描画します。


void MQCanvas::FillCircle(int x, int y, float r);

void MQCanvas::FillCircle(float x, float y, float r);

x
中心のX座標
y
中心のY座標
r
半径

指定した中心位置から指定した半径の円の内部を塗りつぶします。


void MQCanvas::DrawEllipse(int x, int y, float rx, float ry);

void MQCanvas::DrawEllipse(float x, float y, float rx, float ry);

x
中心のX座標
y
中心のY座標
rx
X方向の半径
ry
Y方向の半径

指定した中心位置から指定した半径の楕円を描画します。


void MQCanvas::FillEllipse(int x, int y, float rx, float ry);

void MQCanvas::FillEllipse(float x, float y, float rx, float ry);

x
中心のX座標
y
中心のY座標
rx
X方向の半径
ry
Y方向の半径

指定した中心位置から指定した半径の楕円の内部を塗りつぶします。


void MQCanvas::DrawRect(int x, int y, int w, int h);

void MQCanvas::DrawRect(float x, float y, float w, float h);

x
左上のX座標
y
左上のY座標
w
横幅
h
縦幅

長方形を描画します。


void MQCanvas::FillRect(int x, int y, int w, int h);

void MQCanvas::FillRect(float x, float y, float w, float h);

x
左上のX座標
y
左上のY座標
w
横幅
h
縦幅

長方形の内部を塗りつぶします。


void MQCanvas::DrawRoundRect(int x, int y, int w, int h, int rx, int ry);

void MQCanvas::DrawRoundRect(float x, float y, float w, float h, float rx, float ry);

x
左上のX座標
y
左上のY座標
w
横幅
h
縦幅
rx
角の丸の横方向の半径
ry
角の丸の縦方向の半径

角の丸い長方形を描画します。


void MQCanvas::FillRoundRect(int x, int y, int w, int h, int rx, int ry);

void MQCanvas::FillRoundRect(float x, float y, float w, float h, float rx, float ry);

x
左上のX座標
y
左上のY座標
w
横幅
h
縦幅
rx
角の丸の横方向の半径
ry
角の丸の縦方向の半径

角の丸い長方形の内部を塗りつぶします。


void MQCanvas::DrawPolygon(POINT *points, int num_points);

void MQCanvas::DrawPolygon(MQCanvasPoint *points, int num_points);

points
点の配列
num_points
点の数

指定した点列を結んだ多角形を描画します。始点と終点が結ばれた閉領域となります。


void MQCanvas::FillPolygon(POINT *points, int num_points);

void MQCanvas::FillPolygon(MQCanvasPoint *points, int num_points);

points
点の配列
num_points
点の数

指定した点列を結んだ多角形の内部を塗りつぶします。始点と終点が結ばれた閉領域となります。


void MQCanvas::DrawDIB(void *header, void *buffer, int x, int y);

void MQCanvas::DrawDIB(void *header, void *buffer, int x, int y, int w, int h);

header
DIBヘッダ領域
buffer
DIB画像領域
x
描画先の左上X座標
y
描画先の左上Y座標
w
描画先の横幅
h
描画先の縦幅

指定した位置にDIBを描画します。

header には BITMAPINFOHEADER構造体、また8bit以下の場合はその後にRGBQUAD配列が続きます。

buffer は BITMAPINFOHEADER構造体内で定義された画像データとなります。


void MQCanvas::DrawSVG(MQSVGDraw *svg, int x, int y, int w, int h);

svg
SVGファイルデータを管理するクラス
x
描画先の左上X座標
y
描画先の左上Y座標
w
描画先の横幅
h
描画先の縦幅

(new in Rev4.60)

指定した位置にSVGを描画します。


void MQCanvas::DrawText(const wchar_t *str, int x, int y, int w, int h, bool horz_center, bool vert_center = true);

str
文字列
x
描画先の左上X座標
y
描画先の左上Y座標
w
描画先の横幅
h
描画先の縦幅
horz_center
水平方向のセンタリング
vert_center
垂直方向のセンタリング

指定した領域内に文字列を描画します。


POINT MQCanvas::MeasureText(const wchar_t *str);

str
文字列
戻り値
サイズ

指定した文字列を描画した場合の縦横のサイズをピクセル数で計算します。