|
分類:[C#]
動作テストしていて気づきました。別のwindowが重なるとそのwindowが消えたところのグラフィックが消えてしまいます。ダブルバッファリングを使うと瞬間表示して画像が消えてしまいます。ResizeRedrawなど設定してみましたが、改善できません。原因知っている方、お助けください。以下にコード表記しておきます。
public void MTM()
{
// this.DoubleBuffered = true;
IllustClass.Paint(Haikei, Hito, X, CreateGraphics());
// Invalidate();
// this.SetStyle(ControlStyles.ResizeRedraw, true);
OnseiClass.Koe(Kotoba);
}
↑をform1にて呼び出します。//をとるとダブルバッファリング動きますが、瞬間表示してボタンなどのコントロールが出ると消えてしまいます。グラフィックはIllustClassを作ってform外より呼び出します。この状態だと表示はしていますが、別のwindowが重なるとその部分のグラフィックが消えてしまいます。
public static class IllustClass
{
public static void Paint(string usiro, string hito, int Iti, Graphics g)
{
Bitmap Haikei = new Bitmap(usiro);
Bitmap Mask = new Bitmap(hito);
Bitmap Kyara = new Bitmap(hito);
Rectangle Kage = new Rectangle(Mask.Width / 2, 0, Mask.Width, Mask.Height);
Rectangle HKage = new Rectangle(0, 0, Kyara.Width / 2 - 1, Kyara.Height);
Mask.MakeTransparent(System.Drawing.Color.White);
Kyara.MakeTransparent(System.Drawing.Color.Black);
g.DrawImage(Haikei, 0, 0);
g.DrawImage(Mask, Iti, 511 - Mask.Height, Kage, GraphicsUnit.Pixel);
g.DrawImage(Kyara, Iti, 511 - Kyara.Height, HKage, GraphicsUnit.Pixel);
Haikei.Dispose();
Mask.Dispose();
Kyara.Dispose();
}
}
以上よろしくお願いいたします。
|