問題タブ [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.

0 投票する
3 に答える
22493 参照

c# - RGB 形式のファイルからビットマップを読み込みます (アルファなし)

単純に .BMP ファイルをロードして、Bitmap オブジェクトを 24 ビット RGB 形式 (または RGB 形式の 32 ビット) で取得したいだけです。

私が試したすべてのメソッドは、PixelFormat = Format32bppArgb の Bitmap/Image オブジェクトを返します。もちろん、BMP にアルファがない場合でも。

現在、最初のオブジェクトを24ビットRBGのメモリビットマップ内の別のオブジェクトにコピーすることで問題を解決しています。

それを行う単一の方法はありますか?

ありがとう

0 投票する
1 に答える
566 参照

.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を使用します。

0 投票する
2 に答える
6728 参照

asp.net - .net Drawing.Graphics.FromImage()は、空白の黒い画像を返します

asp.netでアップロードされたjpegを再スケーリングしようとしています

だから私は行きます:

これにより、どのファイルを指定しても、バージンブラックのjpegが保存されます。入力画像ストリームをすぐにビットマップに取り込むdoneと、次のように再圧縮して正常に保存されます。

gで魔法をかける必要がありますか?

upd:試しました:

同じ話-正しい寸法の純粋な黒

0 投票する
4 に答える
19507 参照

c# - C# 巾着文字間隔

Graphics.DrawString を使用するときに文字間隔を制御することは何とか可能ですか? それを可能にする DrawString または Font へのオーバーロードが見つかりません。

文字間隔とは、文字間の距離を意味します。十分なスペースを追加すると、MyString は MyString のように見える可能性があります。

0 投票する
4 に答える
24703 参照

c# - 透明ピクセルの上に DrawString を使用した不適切なテキスト レンダリング

テキストをビットマップにレンダリングするとき、不透明でないアルファを含む領域の上にテキストをレンダリングすると、テキストの見栄えが非常に悪くなります。下にあるピクセルがより透明になるにつれて、問題は次第に悪化します。推測する必要がある場合は、下にあるピクセルが透明な場合、テキスト レンダラーはアンチエイリアス処理された「灰色」のピクセルを黒一色として描画します。

ここにいくつかのスクリーンショットがあります:

透明なピクセルの上に描画されるテキスト:

代替テキスト

半透明のピクセルの上に描画されるテキスト:

代替テキスト

不透明なピクセルに描画されるテキスト:

代替テキスト

テキストのレンダリングに使用されるコードは次のとおりです。

0 投票する
1 に答える
4175 参照

c# - c#winforms-長方形のスクロール可能なパネル

私はwinformsに不慣れで、運がなくて次の答えを追跡しようとしました...

私はwinformsのパネルを持っていて、それにパネル自体よりも広い長方形を追加します。パネルのAutoScrollプロパティをtrueに設定しましたが、パネルの水平スクロールバーが表示されません。どうしてこれなの?スクロールバーをスクロールするにはどうすればよいですか?

長方形を追加するための私のコードは次のとおりです。

パネルにLabelコントロールを追加し、パネルの境界を超えるテキスト値を指定すると、自動スクロールは機能しますが、長方形の場合は機能しません。

どうもありがとう。

0 投票する
1 に答える
557 参照

winforms - 「アウトライン」を含むパスからクリップ領域を作成するにはどうすればよいですか?

角の丸い長方形のGraphicsPath(下の赤いアウトライン画像を参照)を作成し、これをグラフィックを描画するときのクリップ領域として、およびフォームの領域として使用しています。

残念ながら、パスは見た目は良いですが、リージョンとしてはうまく機能しません(下の黒い実線の画像を参照)

パスのすべての「アウトライン」ピクセルを含むパスからクリッピング領域を生成する方法はありますか?ビットマップを生成し、これを処理してリージョンを作成する必要がありますか?

角丸長方形のパス:

角丸長方形

クリップ領域として使用する場合:

クリップ領域

不一致(赤いピクセルはパスのアウトラインにありますが、領域の外側にあります。青いピクセルは両方にあります):

オーバーラップ

0 投票する
1 に答える
2881 参照

.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()は、パラメーター。HBITMAPHPALETTE

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+ビットマップを使用できなくなるようです。

したがって、要約すると:

  1. .Net Bitmapオブジェクトが破棄されるまで、元のビットマップハンドルを保持する必要がありますか?
  2. GDI +関数はGdipCreateBitmapFromHBITMAP()、ソースビットマップのコピーを作成しますか、それとも単にオリジナルへのハンドルを保持しますか?
  3. 以前にデバイスコンテキストに選択されたHBITMAPを使用しないのはなぜですか?
0 投票する
1 に答える
538 参照

c# - ディスクに書き込む前に変更されたイメージのファイルサイズを取得する

で.jpgから.pngに変換していSystem.Drawingますが、この変換により、変換された.pngが元の.jpgよりもはるかに大きくなる傾向があることがわかりました。.pngに変換した後、10倍以上大きくなることがあります。

それが常に当てはまるように思われる場合(これを回避する方法を知らない限り)、ディスクに保存する前にその.pngのファイルサイズを決定する方法はありますか?たとえば、最初にストリームに書き込んでから、そのストリームサイズを取得しますか?どうすればこれを行うことができますか?

0 投票する
4 に答える
67940 参照

c# - C#のカラーコードで色を設定する

たとえば、次のカラーコードを使用して、c#コードに色を追加しようとしています。

ListTreeView.Background = new SolidColorBrush(Colors.White);

これは機能していますが、この色をカラーコードとして追加したいので、次のように追加します

System.Windows.Media

誰かが私に例を教えてもらえますか

System.Drawing

だから私は次のことができます:

ListTreeView.Background = ColorTranslator.FromHtml( "#FFE7EFF2");

これは私にエラーを与えます; 何か案は?