DOBON.NETプログラミング道掲示板
(現在 過去ログ2 を表示中)
HOME
HELP
新規作成
新着記事
トピック表示
発言ランク
ファイル一覧
検索
過去ログ
[
最新記事及び返信フォームをトピックトップへ
]
[ トピック内全3記事(1-3 表示) ] <<
0
>>
■33848
/ inTopicNo.1)
GraphicsUnit.Document使用時に解像度に合わせて位置決めしたい
▼
■
□投稿者/ うりうり
一般人(1回)-(2018/06/09(Sat) 17:55:53)
環境/言語:[c#]
分類:[.NET]
Graphics gのx,y座標にtextの文字列を書きたいのですが、指定されるx,yはミリ単位なため
mm2pxでピクセル値に変換しています。
g.DrawString(text, font, Brushes.Black, mm2px(x), mm2px(y));
int mm2px(float mm) {
return (int)(827.0 / 210.0 * mm);
}
上記式の827は、
pd = new System.Drawing.Printing.PrintDocument();
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
private void pd_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) {
MessageBox.Show(e.PageBounds.Width.ToString());
}
としたときに、827が表示されるためです。
210はA4縦の紙幅[mm]です。
今まではこの固定値で、gがPanelであってもPrinterであってもうまく行っていたのですが、
g.PageUnit = GraphicsUnit.Document;
とする必要が出てきました。
そうするとgの解像度がPanelやPrinterによって変わるため、
int mm2px(float mm) {
return (int)(DPI / 25.4 * mm); // DPIにはGraphics.DpiXが入っている
}
としたのですが、見当違いの位置に表示されてしまいます。
その見当違いが比例的であれば何か係数を掛ければいいのですが、
Panelなら3倍ぐらい、Printerなら10倍ぐらいと全く違います。
しかし表示される位置は合わないものの、表示されるフォントの大きさは
正常であるため、それらは別な方法で調整をしているものと考えます。
どのようにすればいいのか、教えて頂けないでしょうか。
よろしくお願いいたします。
引用返信
削除キー/
編集
削除
■33849
/ inTopicNo.2)
Re[1]: GraphicsUnit.Document使用時に解像度に合わせて位置決めしたい
▲
▼
■
□投稿者/ Azulean
大御所(495回)-(2018/06/09(Sat) 20:55:39)
2018/06/09(Sat) 20:56:08 編集(投稿者)
GraphicsUnit.Document で試したことはないので外しているかもしれませんが…。
■
No33848
に返信(うりうりさんの記事)
> しかし表示される位置は合わないものの、表示されるフォントの大きさは
> 正常であるため、それらは別な方法で調整をしているものと考えます。
>
> どのようにすればいいのか、教えて頂けないでしょうか。
以下によると、数値単位は 1/300 インチらしいので、mm / 25.4 * 300.0 という感じですかね?(mm → インチ → 1/300 インチ)
https://msdn.microsoft.com/ja-jp/library/system.drawing.graphicsunit
引用返信
削除キー/
編集
削除
■33850
/ inTopicNo.3)
Re[2]: GraphicsUnit.Document使用時に解像度に合わせて位置決めしたい
▲
▼
■
□投稿者/ うりうり
一般人(2回)-(2018/06/09(Sat) 22:01:18)
Azuleanさん、お返事ありがとうございます。
私は解像度を使って計算する必要があると思いDPIを使って
試行錯誤していたのですが、Azuleanさんの回答を見てそうで
ないと気付きました。
実際にやってみると mm / 25.4 * 300 でうまく位置決めしている
ので満足しています。
ありがとうございました。
解決
済
み!
引用返信
削除キー/
編集
削除
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
Mode/
通常管理
表示許可
Pass/
HOME
HELP
新規作成
新着記事
トピック表示
発言ランク
ファイル一覧
検索
過去ログ
-
Child Tree
-