WIL説明書(C++)  3.1.0
8-1. スケーリング有り (伸縮する)

画像の表示倍率に合わせて図形も伸縮するオーバレイの生成方法を示します。

【プレビュー】

Tutorial_CPP_Step1_8_1.png
1. オーバレイへのポインタ
CMainFrame のヘッダーに CFvOverlay のポインタを保管するメンバーフィールドを追加します。 後述のオーバレイの生成で CFvDisplay に追加したオーバレイを保管する為に使用します。 ここでは、m_overlay1 というインスタンス名で作成しています。
MainFrm.h
protected: // コントロール バー用メンバ.
CStatusBar m_wndStatusBar;
CToolBar m_wndToolBar;
//CChildView m_wndView; // 既定のビュー.
CEvView m_wndView; // 画像ビュー.
FVCL::Data::CFvImage m_image; // 表示対象の画像オブジェクト.
FVCL::GDI::CFvOverlay* m_overlay1; // オーバレイ(スケーリング有り)


追加したポインタをコンストラクタで NULL 初期化します。
MainFrm.cpp
CMainFrame::CMainFrame()
{
m_overlay1 = NULL;
}

2. オーバレイの生成
下記のように CreateOverlay でオーバレイを生成し、SetScaling で伸縮属性を true に設定します。 ここでは、OnViewOverlay1 イベントハンドラ内に処理を記述しています。 メニュー項目の作成やイベントハンドラの作成方法については省略します。
MainFrm.cpp
void CMainFrame::OnViewOverlay1()
{
// オーバレイ(m_overlay1)が生成済みの場合は無視します.
if( -1 != m_wndView.m_display.GetOverlayIndex(m_overlay1) )
{
AfxMessageBox(_T("既に生成されています."));
return;
}
// オーバレイを生成して、ポインタを保管します.
m_overlay1 = m_wndView.m_display.CreateOverlay();
m_overlay1->SetEnable(true); // 可視属性=可視.
m_overlay1->SetScaling(true); // 伸縮あり.
// ----------------------------------------
// 1) 矩形の描画.
// ※後述の 3-1. 図形の描画 (矩形) を参照.
// 2) 画像の描画.
// ※後述の 3-2. 図形の描画 (画像) を参照.
// ----------------------------------------
m_wndView.ReDraw( false );
}

3-1. 図形の描画 (矩形)
前述で作成したオーバレイに図形を描画します。 ここでは傾きのある青い矩形の枠を描画しています。
// 1) 矩形の描画.
m_overlay1->DrawFigure( FVCL::Data::CFvRectangle(0,0,134,136) )
);
rect->SetAngle( -31.0 );
rect->GetPen().SetColor( RGB(0x00,0x00,0xFF) );

3-2. 図形の描画 (画像)
次に画像を描画します。 ここでは、前述の矩形枠の半透明塗り潰しとして利用しています。
// 2) 画像の描画.
m_overlay1->DrawImage(
);
gimg->SetAngle( -31.0 );
gimg->SetPixelRGB(0,0, FVCL::Conversion::ToRGB32(0x00,0x00,0xFF));
gimg->SetAlpha(0x7F);
gimg->SetStretchHorzSize(134);
gimg->SetStretchVertSize(136);


Documentation copyright © 2007 Tokyo Electron Device Limited. [B-001864]
Generated on 2025年11月17日(月) 08時44分06秒 for WIL説明書(C++) by doxygen 1.8.11