12.5ピクセルXと20ピクセルY(PICAスケール)の間隔でグリッドを描画する必要があります。フォントは特定のサイズでなければならず、線は依然として1ピクセルの太さでなければなりません。現在、これらの値を浮動小数点数で保存しています(たとえば、3行目から6行目までのテキストは、2f * cx、5f * cyとして表示されます)。私は、スケール変換を使ってこの不要な乗算を避けたいのですが、残念ながらそれらはフォントのサイズと線の太さにも影響します。これを避ける方法はありますか?あるいは、cx/cy値が定数であるため、コンパイラは私のためにこれを静かに実行しますか?C#GDIの位置を調整しますが、フォントのサイズや線の太さは変更しません。
答えて
コンパイラは式の定数部分を1つの定数に減らす必要がありますが、浮動小数点の値はコンパイル時には分かっていないので、実行時にはさらに倍数が必要になります。したがって、(1 + 2 + c)* 6 * fは、cが定数の場合、コンパイラによってn * fに減らすことができます。
テキストの拡大/縮小を防ぐには、スケーリング変換を設定し、最小線幅を維持することを気にしない非テキストグラフィックスをすべて描画してから、変換を使用せずにテキストを描画します。トランスフォームを使用して、テキストをどこから独立して計算する必要がなくなるかを特定することができます.LPtoDP(論理ポイントからデバイスポイント)のような機能は、そのトリックを行う必要があります。
これにアプローチする別の方法は、テキストをトランスフォームにレンダリングすることですが、テキストサイズ自体に逆のスケーリングを適用することです。したがって、変換が5%に縮小すると、フォントサイズを5%拡大することができます。これでは正確な結果は得られませんが、ビジュアルには十分近いかもしれません。
...また、マイクロソフトでは、線を拡大縮小したくない場合は、少し「ハック」を残しています。行の幅を0pxに設定すると、常に1ピクセルの太さで描画されます。
うわー。それは知らなかった。それはきちんとしている。 – Patrick
それは素晴らしいです、あなたは脚の終わりです。 –
- 1. Swift:コレクションビューがサイズの変更に正しく調整されていません
- 2. ULは位置を調整します
- 3. divでCSSを使って高さを調整しますが、ブラウザのブートストラップはサイズ変更されません
- 4. の変更フォントの太さ
- 5. mpl_toolkits.basemapのサイズが正しく調整されていません
- 6. フォントawesomeのサイズが変更されていません
- 7. 統一変換の位置が位置を変更していません
- 8. Qt:フォントの太さを変更する
- 9. iOS - モーダルビューコントローラのサイズはどうやって調整しますか?
- 10. R pie()線の太さを調整する
- 11. 自動サイズ調整のテキストビューが機能していません
- 12. マウスの位置が描画されたキューブのサイズを変更しました
- 13. ウィンドウのサイズを変更するとHTMLの位置が変更されます
- 14. C#ToolStripControlHostサイズ変更はツールストリップのサイズに影響しません
- 15. RichTextBoxの枠線の垂直位置を調整する方法
- 16. divの高さに合わせてトップ位置を調整します。
- 17. jQueryは線の高さとフォントのサイズをアニメーションします
- 18. フレームセットのサイズがマウスのサイズ変更後に正しく調整されない
- 19. Extjs - Compositefield内のアイテムが拡大/サイズ変更されたときの兄弟の位置の調整方法
- 20. ウィンドウサイズが変更されたときのWPFポップアップ位置の調整
- 21. Amchart凡例の位置が変更されていません
- 22. Android - ギャラリーの位置とサイズを変更しますか?
- 23. ブートストラップテーブルの位置調整
- 24. ウィンドウのサイズを変更してdivの高さが調整されない
- 25. UITabBarItemバッジの位置を調整しますか?
- 26. フォントサイズを変更せずにフォントの太さを制御する
- 27. UIImageはサイズを変更して収まるように調整します
- 28. System.Drawing.Font:フォントの太さの概念はありませんか?
- 29. jQuery slideToggleは動的に位置を調整しますか?
- 30. Qt pythonは位置ウィジェットを動的に調整します
グラフィッククラスにはLPtoDP関数がありますか、それとも自分で作成する必要がありますか?多くのテキスト出力がありますが、これはできるだけ速く(実際にはOnPaintBackgroundに属しています)、アスペクトは1:1ではないので、逆のスケーリングが良い選択とは思われません。 – Patrick
LPtoDPは、Win32 GDI API関数です。 .NETのグラフィックスクラスでは、似ているかもしれませんが、わかりません。 – dthorpe