問題タブ [metafile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
141 参照

vb.net - bmp ファイルを RichTextBox に入れる: 品質を落とさずにサイズ変更 + ウィンドウのスケーリングを処理する

ゴール:

私の目標は、Windows スケーリング (125%、150%、200% など) によって台無しにされることなく、選択したサイズ (高さ 400 ピクセルなど) で画像 (bmp ファイル) を RichTextBox に入れることです。 .)、または品質の低下。

これが私のコードです:

サブを実行すると、RTB は次のようになります: https://i.imgur.com/rqChD4Q.png

背景と私が試したこと

私の最初の試みは、ビットマップ サイズ プロパティを使用することだけでしたが、それは実際に品質を台無しにします。まったく役に立ちません。

それから、品質を分類するこの魔法の方法を見つけました。簡単に言うと、これがここでの一番の答えです:一般的な

要約すると、メタファイルとグラフィックを作成し、サイズを変更してクリップボードに入れ、それをリッチテキストボックスに貼り付けます。

私はそれをうまく機能させました。しかし、私は 4K 画面を 200% に拡大しています。つまり、画像は適切なサイズですが、画像が配置されるメタファイルは 2 倍のサイズになります。

これを回避するために、グーグルで約4時間かけて、見つけたすべてのことを試しました。何をしても、フォームまたはフォーム内のコントロールの DPI は常に 96 であるため、DpiX ソリューションの 1 つを使用できません。

私が追加した場合:

フォームがスケーリングされていないだけです(一部のボタンとラベルはまだスケーリングされています-奇妙です!)

scalecontrol イベントをオーバーライドしようとすると、常に factor.X、factor.Y = 1 が返され、それ以外は返されません。

できれば欲しいもの:

最良の解決策は、倍率の数値を取得することであることに注意してください。125% = 1.25、150% = 1.5 など。その数値があれば、グラフィックの寸法にそれを掛けるだけで、完全に収まります (たとえば)。

私の主な問題は、理解できないコードが多すぎることです。回答の際に心に留めておいていただければ幸いです。疑問点が多すぎると、あなたの回答が理解できない可能性があります。解決策はここにあると思います: https://msdn.microsoft.com/en-us/library/cc250585.aspx

しかし、それは私の頭をはるかに超えています。そのため、どんな助けやアドバイスも本当に感謝しています。

参考までに、私は 3.5 をターゲットにしており、可能であればそれに固執したいと考えています。