問題タブ [gdi+]
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# - 引数の例外-パラメーターが無効です(WinFormのLinkLabel)
LinkLabelクラスがどのように機能するかをテストするためにWinFormsアプリを作成しました。変更したLinkLabelをクリックするまでは問題ないようです。Form1.csコードは次のとおりです。
スタックトレースは以下のとおりです。
System.Windows.Forms.Control.Invalidate(Region region、Boolean invalidateChildren)at System.Windows.Forms.LinkLabel.InvalidateLink(Link link)atSystem.Windows.FormsのSystem.Drawing.Region.GetHrgn(Graphics g)で。 LinkLabel.OnGotFocus(EventArgs e)at System.Windows.Forms.Control.WmSetFocus(Message&m)at System.Windows.Forms.Control.WndProc(Message&m)at System.Windows.Forms.Label.WndProc(Message&m)at System.WindowsのSystem.Windows.Forms.LinkLabel.WndProc(Message&msg)、System.WindowsのSystem.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&m)、System.WindowsのSystem.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)。 System.WindowsのSystem.Windows.Forms.UnsafeNativeMethods.SetFocus(HandleRef hWnd)のForms.NativeWindow.DebuggableCallback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)System.Windows.Forms.LinkLabel.OnMouseDown(MouseEventArgs e)のForms.Control.FocusInternal()at System.Windows.Forms.Control.WmMouseDown(Message&m、MouseButtons button、Int32 clicks)atSystem.Windows.Forms.Control。 WndProc(Message&m)at System.Windows.Forms.Label.WndProc(Message&m)at System.Windows.Forms.LinkLabel.WndProc(Message&msg)at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)atSystem.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager。FPushMessageLoop(Int32 dwComponentID、Int32 reason、Int32 pvLoopData)at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason、ApplicationContext context)at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason、ApplicationContext context)at System.Windows.Forms.Application.Run(Form mainForm)at LinkLabelTest.Program.Main()in C:\ Users \ Tony \ Documents \ Visual Studio 2008 \ Projects \ LinkLabelTest \ LinkLabelTest \ Program.cs:line 22C:\ Users \ Tony \ Documents \ Visual Studio 2008 \ Projects \ LinkLabelTest \ LinkLabelTest \ Program.cs:line 22のMain()C:\ Users \ Tony \ Documents \ Visual Studio 2008 \ Projects \ LinkLabelTest \ LinkLabelTest \ Program.cs:line 22のMain()
以下は、デザイナーが生成したコードです。
誰かアドバイスしてもらえますか?Paintイベントが発生したときにLinkLabelのWindowsハンドルがないという問題です。
よろしくお願いします
トニー
c++ - アルファチャンネル情報を保持して、HBITMAP から Gdiplus::Bitmap を作成する方法は?
Bitmap::FromHBITMAP 関数を使用して新しい Gdiplus::Bitmap を作成すると、結果の Bitmap は不透明になります。元の HBITMAP の部分的な透明度は保持されません。
アルファ チャネル データをもたらす HBITMAP から Gdiplus::Bitmap を作成する方法はありますか?
c# - Image.Save(..) は、メモリ ストリームが閉じているため、GDI+ 例外をスローします。
画像として保存したいバイナリデータがあります。画像を保存しようとすると、画像の作成に使用されたメモリ ストリームが保存前に閉じられていた場合、例外がスローされます。これを行う理由は、画像を動的に作成しているためです..メモリストリームを使用する必要があります。
これはコードです:
ストリームを閉じた状態で画像を保存する方法について何か提案はありますか? 画像が保存された後、開発者がストリームを閉じることを覚えているとは言えません。実際、開発者は、イメージがメモリ ストリームを使用して生成されたことを認識していません (別のコードで発生するため)。
私は本当に混乱しています:(
asp.net - xsp を使用した Mono での GDI に必要なライブラリ
これが状況です。mono xsp で実行されている ASP ページで (GDI+ を使用して) グラフィックを作成しています。私の開発環境は GUI で実行されているため、これは私の開発環境ではうまく機能しますが、GUI のないサーバーで実行しようとすると失敗します (Gnome の実行に必要な特定のライブラリが原因であると想定しています)。インストールされていません)。GUI なしのインストールで Mono の下で GDI コードを実行するには、どのようなライブラリが必要で、どのようにインストールすればよいでしょうか。
gdi+ - GDI+ から GDI への変換に関する奇妙な問題: Bitmap と HBitmap
gdi+ Bitmap を gdi オブジェクト HBitmap に変換したい。
私は次の方法を使用しています:
img オブジェクトがダイアログに描画されています。メソッドのこの部分が呼び出されると、奇妙なことが起こります! ウィンドウに表示される画像が変わりました!少しクリアまたはシャープになります。私の質問は、何が起こるのですか?
c++ - GDI+ ディザリングの問題
Windows 用の Win32 API を使用する C++ アプリケーションを使用していますが、GDI+ ディザリングに問題がありますが、その理由がわかりません。
カスタム コントロール (カスタム ウィンドウ) があります。WM_PAINT メッセージを受信したら、グラフィック デバイスで FillPolygon を使用していくつかのポリゴンを描画します。このグラフィック デバイスは、BeginPaint の HDC を使用して作成されました。
ただし、ポリゴンが画面に表示されると、透明ではなくディザリングされ、いくつかの色 (おそらく 256?) しか表示されないように見えます.NET インターフェイスを使用して C# で同じことを GDI+ に実行すると、正常に動作します。何が起こっているのか疑問に思っています。
私は特別なことをしていません。これは、私の知る限り、正常に動作するはずの単純な例です。私は何か間違ったことをしていますか?
編集:気にしないでください。C# の例ではリモート デスクトップでディザ処理を行っていませんが、リモート デスクトップでのみ発生します。リモート デスクトップは 32 ビット カラーに設定されているため、それがどうなっているのかわかりません。
c# - C#でアルファ透明PNGを作成できますか?
縦書きのテキストを表示するマルチブラウザページがあります。
すべてのブラウザでテキストを垂直方向にレンダリングするための醜いハックとして、テキストが垂直方向に描画されたPNGを返すカスタムページハンドラーを作成しました。
これが私の基本的なコードです(C#3ですが、1までの他のバージョンへの小さな変更):
これにより、透明度がインデックスベースであることを除いて、私が望むように見える画像が作成されます。PNGを返すので、適切なアルファ透明度をサポートできます。
.netでこれを行う方法はありますか?
Vlixのおかげで(コメントを参照)、まだ正しくありませんが、いくつか変更を加えました。
これでアルファは機能しているように見えますが、テキストはブロック状に見えます。まるでジャギーエッジが残っているかのように見えますが、背景は黒です。
これは.Net/GDI +のバグですか?gifのインデックスの透明度でも失敗することはすでにわかっているので、あまり自信がありません。
この画像は、これがうまくいかない2つの方法を示しています。
上の画像は、白い背景やMakeTransparent
呼び出しなしでそれを示しています。2つ目は、背景が白で塗りつぶされMakeTransparent
、インデックスの透明度を追加するために呼び出されます。
これらはどちらも正しくありません。2番目の画像には、私が望まない白いエイリアシングジャギーがあり、最初の画像は黒に対してしっかりとエイリアシングされているように見えます。
c# - CustomControl チェス盤で強調表示された四角が、最初の MouseDown イベントを超えて持続しない
私は自分のスキルを磨くための演習として、またそれが楽しいという理由から、C# で Windows アプリのチェス ゲームをコーディングしています。プレーヤーがオプションを選択して、クリックされたときにピースが合法的に移動できる正方形を強調表示できるようにする機能を含めました。CustomControl はチェス盤のレンダリングを処理し、正方形も強調表示します。
プレーヤーがピースを新しい正方形にドラッグし始めるまで、すべてが計画どおりに機能します。マウスを動かした瞬間、ハイライトが消えます。Paint イベントが発生し、ボード自体が再描画されると思われます。また、ハイライトは最初のボード レイアウトの一部ではないため、描画されません。
私がやりたいことは、ピースが目的の正方形にドロップされるまで、正方形が強調表示されたままになることです。これを達成することは可能ですか?任意の提案をいただければ幸いです。
疑似コード:
c# - C# で他のコントロールにコントロールを描画する方法はありますか?
オーバーライドされたペイントイベントで、他のコントロールにコントロールを描画したいと思います。描画とは、コントロールを他のコントロール内に配置するのではなく、実際の描画を意味します。それを行う良い方法はありますか?