問題タブ [system.drawing]
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.
c# - RGB 形式のファイルからビットマップを読み込みます (アルファなし)
単純に .BMP ファイルをロードして、Bitmap オブジェクトを 24 ビット RGB 形式 (または RGB 形式の 32 ビット) で取得したいだけです。
私が試したすべてのメソッドは、PixelFormat = Format32bppArgb の Bitmap/Image オブジェクトを返します。もちろん、BMP にアルファがない場合でも。
現在、最初のオブジェクトを24ビットRBGのメモリビットマップ内の別のオブジェクトにコピーすることで問題を解決しています。
それを行う単一の方法はありますか?
ありがとう
.net - 設定で使用すると RotateFlipType の値が正しくない
設定ファイルで System.Drawing.RotateFlipType を使用しようとしています。このスクリーンショットは私の問題を要約しています:
代替テキスト http://l-2.incito.hr/rotatefliptype.png
RotateFlipType の各値が 2 倍になり、一部が欠落しています。欠落している値 (Rotate180FlipX など、app.config 経由) を使用しようとすると、単純に無視されます。
SP1でVS2008を使用し、Windows 7でフレームワーク3.5でvb.netを使用します。
asp.net - .net Drawing.Graphics.FromImage()は、空白の黒い画像を返します
asp.netでアップロードされたjpegを再スケーリングしようとしています
だから私は行きます:
これにより、どのファイルを指定しても、バージンブラックのjpegが保存されます。入力画像ストリームをすぐにビットマップに取り込むdone
と、次のように再圧縮して正常に保存されます。
gで魔法をかける必要がありますか?
upd:試しました:
同じ話-正しい寸法の純粋な黒
c# - C# 巾着文字間隔
Graphics.DrawString を使用するときに文字間隔を制御することは何とか可能ですか? それを可能にする DrawString または Font へのオーバーロードが見つかりません。
文字間隔とは、文字間の距離を意味します。十分なスペースを追加すると、MyString は MyString のように見える可能性があります。
c# - 透明ピクセルの上に DrawString を使用した不適切なテキスト レンダリング
テキストをビットマップにレンダリングするとき、不透明でないアルファを含む領域の上にテキストをレンダリングすると、テキストの見栄えが非常に悪くなります。下にあるピクセルがより透明になるにつれて、問題は次第に悪化します。推測する必要がある場合は、下にあるピクセルが透明な場合、テキスト レンダラーはアンチエイリアス処理された「灰色」のピクセルを黒一色として描画します。
ここにいくつかのスクリーンショットがあります:
透明なピクセルの上に描画されるテキスト:
半透明のピクセルの上に描画されるテキスト:
不透明なピクセルに描画されるテキスト:
テキストのレンダリングに使用されるコードは次のとおりです。
c# - c#winforms-長方形のスクロール可能なパネル
私はwinformsに不慣れで、運がなくて次の答えを追跡しようとしました...
私はwinformsのパネルを持っていて、それにパネル自体よりも広い長方形を追加します。パネルのAutoScrollプロパティをtrueに設定しましたが、パネルの水平スクロールバーが表示されません。どうしてこれなの?スクロールバーをスクロールするにはどうすればよいですか?
長方形を追加するための私のコードは次のとおりです。
パネルにLabelコントロールを追加し、パネルの境界を超えるテキスト値を指定すると、自動スクロールは機能しますが、長方形の場合は機能しません。
どうもありがとう。
winforms - 「アウトライン」を含むパスからクリップ領域を作成するにはどうすればよいですか?
角の丸い長方形のGraphicsPath(下の赤いアウトライン画像を参照)を作成し、これをグラフィックを描画するときのクリップ領域として、およびフォームの領域として使用しています。
残念ながら、パスは見た目は良いですが、リージョンとしてはうまく機能しません(下の黒い実線の画像を参照)
パスのすべての「アウトライン」ピクセルを含むパスからクリッピング領域を生成する方法はありますか?ビットマップを生成し、これを処理してリージョンを作成する必要がありますか?
角丸長方形のパス:
クリップ領域として使用する場合:
不一致(赤いピクセルはパスのアウトラインにありますが、領域の外側にあります。青いピクセルは両方にあります):
.net - Image.FromHbitmap()を使用してビットマップを作成する場合、元のビットマップハンドルをどれくらい早く削除できますか?
http://msdn.microsoft.com/en-us/library/k061we7x%28VS.80%29.aspxImage.FromHbitmap()
のドキュメントから:
FromHbitmapメソッドは、GDIビットマップのコピーを作成します。そのため、新しいイメージを作成した直後に、GDIDeleteObjectメソッドを使用して着信GDIビットマップを解放できます。
これは、ビットマップインスタンスが作成されるとすぐに、DeleteObjectを使用してビットマップハンドルをすぐに削除できることを明確に示しています。
ただし、with Reflectorの実装を見るとImage.FromHbitmap()
、GDI+関数のかなり薄いラッパーであることがわかりますGdipCreateBitmapFromHBITMAP()
。
GDI +フラットAPI関数に関するドキュメントはほとんどありませんが、http://msdn.microsoft.com/en-us/library/ms533971%28VS.85%29.aspxによると、GdipCreateBitmapFromHBITMAP()
これBitmap::Bitmap()
は、パラメーター。HBITMAP
HPALETTE
http://msdn.microsoft.com/en-us/library/ms536314%28VS.85%29.aspxにあるこのバージョンのBitmap::Bitmap()
コンストラクターのドキュメントには、次のように書かれています。
GDIビットマップとGDIパレットを削除するのはあなたの責任です。ただし、GDI + Bitmap :: Bitmapオブジェクトが削除されるか、スコープ外になるまで、GDIビットマップまたはGDIパレットを削除しないでください。
GDI + Bitmap :: Bitmapコンストラクターに、デバイスコンテキストで現在(または以前に)選択されているGDIビットマップまたはGDIパレットを渡さないでください。
さらに、GdiPlusBitmap.hのGDI+のC++部分のソースコードで、問題のコンストラクター自体がフラットAPIの関数Bitmap::Bitmap()
のラッパーであることがわかります。GdipCreateBitmapFromHBITMAP()
私が簡単に理解できないのはGdipCreateBitmapFromHBITMAP()
、この機能のコアである実装ですが、ドキュメントの2つの注釈は矛盾しているようです。.Netのドキュメントには、ビットマップハンドルをすぐに削除できると記載されており、GDI +のドキュメントには、ラッピングオブジェクトが削除されるまでビットマップハンドルを保持する必要があると記載されていますが、どちらも同じGDI+関数に基づいています。
さらに、GDI +ドキュメントは、デバイスコンテキストで現在または以前に選択されたソースHBITMAPを使用しないように警告しています。現在、ビットマップがデバイスコンテキストで選択されるべきではない理由は理解できますが、以前にデバイスコンテキストで選択されたビットマップを使用することに対する警告がある理由は理解できません。これにより、標準のGDIを使用してメモリ内に作成されたGDI+ビットマップを使用できなくなるようです。
したがって、要約すると:
- .Net Bitmapオブジェクトが破棄されるまで、元のビットマップハンドルを保持する必要がありますか?
- GDI +関数は
GdipCreateBitmapFromHBITMAP()
、ソースビットマップのコピーを作成しますか、それとも単にオリジナルへのハンドルを保持しますか? - 以前にデバイスコンテキストに選択されたHBITMAPを使用しないのはなぜですか?
c# - ディスクに書き込む前に変更されたイメージのファイルサイズを取得する
で.jpgから.pngに変換していSystem.Drawing
ますが、この変換により、変換された.pngが元の.jpgよりもはるかに大きくなる傾向があることがわかりました。.pngに変換した後、10倍以上大きくなることがあります。
それが常に当てはまるように思われる場合(これを回避する方法を知らない限り)、ディスクに保存する前にその.pngのファイルサイズを決定する方法はありますか?たとえば、最初にストリームに書き込んでから、そのストリームサイズを取得しますか?どうすればこれを行うことができますか?
c# - C#のカラーコードで色を設定する
たとえば、次のカラーコードを使用して、c#コードに色を追加しようとしています。
ListTreeView.Background = new SolidColorBrush(Colors.White);
これは機能していますが、この色をカラーコードとして追加したいので、次のように追加します
System.Windows.Media
誰かが私に例を教えてもらえますか
System.Drawing
だから私は次のことができます:
ListTreeView.Background = ColorTranslator.FromHtml( "#FFE7EFF2");
これは私にエラーを与えます; 何か案は?