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. ULは位置を調整します
- 2. divでCSSを使って高さを調整しますが、ブラウザのブートストラップはサイズ変更されません
- 3. mpl_toolkits.basemapのサイズが正しく調整されていません
- 4. の変更フォントの太さ
- 5. マウスの位置が描画されたキューブのサイズを変更しました
- 6. divの高さに合わせてトップ位置を調整します。
- 7. iOS - モーダルビューコントローラのサイズはどうやって調整しますか?
- 8. jQueryは線の高さとフォントのサイズをアニメーションします
- 9. フレームセットのサイズがマウスのサイズ変更後に正しく調整されない
- 10. Extjs - Compositefield内のアイテムが拡大/サイズ変更されたときの兄弟の位置の調整方法
- 11. Android - ギャラリーの位置とサイズを変更しますか?
- 12. フォントサイズを変更せずにフォントの太さを制御する
- 13. UIImageはサイズを変更して収まるように調整します
- 14. System.Drawing.Font:フォントの太さの概念はありませんか?
- 15. JPanelのサイズを変更しません
- 16. App Storeの更新が再調整されていません
- 17. Android Studioのフローティングウィンドウは、閉じて再オープンしても位置やサイズが維持されません。
- 18. UITableViewCellEditingStyleの位置を変更します
- 19. ListBoxでウィンドウのサイズを変更しますが、コンテンツのサイズは変更しません。
- 20. Javascriptの変更位置はChromeまたはIEでは機能しません
- 21. eclipse RCPでボタンのサイズと位置を変更できませんか?
- 22. タブコントロールのフォントを変更すると、コンテンツのサイズが変更されます
- 23. スイングコンポーネントの位置を調整する
- 24. FB.ui()ダイアログボックスの位置を調整する
- 25. Divの自動サイズ調整ツールはありません
- 26. ボタンの位置が変更された場合、ZClip SWFはボタンの位置に揃えられません
- 27. アンドロイドキーボードは調整しませんアンドロイド:windowSoftInputMode =
- 28. Chrome on androidはフォントのサイズを変更します
- 29. cocos3dのメッシュノードの位置が更新されていません
- 30. CSS3トランスフォームは要素の左の位置を変更しませんか?
グラフィッククラスにはLPtoDP関数がありますか、それとも自分で作成する必要がありますか?多くのテキスト出力がありますが、これはできるだけ速く(実際にはOnPaintBackgroundに属しています)、アスペクトは1:1ではないので、逆のスケーリングが良い選択とは思われません。 – Patrick
LPtoDPは、Win32 GDI API関数です。 .NETのグラフィックスクラスでは、似ているかもしれませんが、わかりません。 – dthorpe