初めて、こちらに投稿させていただきます。
かまたと申します。
宜しくお願いいたします。
さて、早速なのですが.NETでのpictureBoxコントロールを
任意の座標系にしたいのですが、なにか方法はあるのでしょうか。
MFCでは
SetMapMode()やらSetWindowExt()やらで変更できたと思ったのですが‥。
識者の方々にご教授願えれば幸いと思っております。
すいません、自己レスです。
当方開発環境は
VC++2005です。
Win32のデバイスコンテキストに相当するのはGraphicsクラスです。
Graphicsクラスの各種メソッドを使うことで、柔軟な設定が可能です。
・RotateTransform:画像の回転
・ScaleTransform:画像の拡大、縮小
・TranslateTransform:画像の平行移動
返信誠に有り難うございます。
かまたです。
以下の様なスケール変換用の関数を作成してみました。
なのですが、例えば
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);
}
かまたです。
自己レスです。
基本的なところで間違っていました。
// ピクチャボックスのスケール変換
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);
}
シャノンさん誠に有り難うございました。