【.NET】pictureBox 任意のスケールの変換 – プログラミング – Home

【.NET】pictureBox 任意...
 
通知
すべてクリア

[解決済] 【.NET】pictureBox 任意のスケールの変換


かまた
 かまた
(@かまた)
ゲスト
結合: 17年前
投稿: 14
Topic starter  

初めて、こちらに投稿させていただきます。
かまたと申します。
宜しくお願いいたします。

さて、早速なのですが.NETでのpictureBoxコントロールを
任意の座標系にしたいのですが、なにか方法はあるのでしょうか。

MFCでは
SetMapMode()やらSetWindowExt()やらで変更できたと思ったのですが‥。

識者の方々にご教授願えれば幸いと思っております。


引用未解決
トピックタグ
かまた
 かまた
(@かまた)
ゲスト
結合: 17年前
投稿: 14
Topic starter  

すいません、自己レスです。

当方開発環境は
VC++2005です。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

Win32のデバイスコンテキストに相当するのはGraphicsクラスです。
Graphicsクラスの各種メソッドを使うことで、柔軟な設定が可能です。
・RotateTransform:画像の回転
・ScaleTransform:画像の拡大、縮小
・TranslateTransform:画像の平行移動


返信引用
かまた
 かまた
(@かまた)
ゲスト
結合: 17年前
投稿: 14
Topic starter  

返信誠に有り難うございます。
かまたです。

以下の様なスケール変換用の関数を作成してみました。
なのですが、例えば
hGraphics->FillRectangle(hSolidBrush, 0, 0, nX_DataCnt, nY_DataCnt);
とした際にピクチャボックスの右と下にわずかな余白ができてしまいます。
もう少し調べてみます。

// ピクチャボックスのスケール変換
void ChangeScale(PictureBox^ hPicBox, Graphics^ hGraphics, USHORT nX_DataCnt,
USHORT nY_DataCnt)
{
float nX_Scale, nY_Scale;

// スケール算出
{
nX_Scale =(float) (hPicBox->Width / nX_DataCnt);
nY_Scale =(float) (hPicBox->Height/ nY_DataCnt);
}

// スケール設定
hGraphics->ScaleTransform(nX_Scale, nY_Scale);
}


返信引用
かまた
 かまた
(@かまた)
ゲスト
結合: 17年前
投稿: 14
Topic starter  

かまたです。

自己レスです。
基本的なところで間違っていました。

// ピクチャボックスのスケール変換
void ChangeScale(PictureBox^ hPicBox, Graphics^ hGraphics, USHORT nX_DataCnt,
USHORT nY_DataCnt)
{
float nX_Scale, nY_Scale;

// スケール算出
{
nX_Scale =(float) ((float)hPicBox->Width / (float)
nX_DataCnt);
nY_Scale =(float) ((float)hPicBox->Height/ (float)
nY_DataCnt);
}

// スケール設定
hGraphics->ScaleTransform(nX_Scale, nY_Scale);
}

シャノンさん誠に有り難うございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました