質問

中央に10 x 10の正方形の透明なギャップがある小さな32 x 32ピクセルの正方形を生成しようとしています。

これは私がこれまでに持っているものです:

private Image CreatePicture(){
    // Create a new Bitmap object, 32 x 32 pixels in size
    Bitmap canvas = new Bitmap(32,32,System.Drawing.Imaging.PixelFormat.Format16bppRgb555);
    for(int i=10;i<21;i++){
        for(int p=10;p<21;p++){
            canvas.SetPixel(i,p,Color.Lime);
        }
    }
    canvas.MakeTransparent(Color.Lime);
    // return the picture
    return canvas;
}

これは大雑把で、最終的な「最適化されたバージョン」にはなりません。その大まかなデモスクリプトです。問題は、返された画像が透明ではなく、単に灰色のボックスになっていることです:(。

ご協力ありがとうございます。

マイケル

更新: PixelFormatをAlpha RGB形式に設定してスクリプトを更新しましたが、実行時にエラーなしで実際に受け入れられます。ただし、「canvas.MakeTransparent(Color.Lime);」を削除すると、行の中央にライムボックスが表示され、灰色の背景と同じ色の灰色のボックスが表示されます。透明性をほのめかすだけでなく、透明性が認識されているように見えます!

private Bitmap CreatePicture(){
    // Create a new Bitmap object, 50 x 50 pixels in size
    Bitmap canvas = new Bitmap(82,82,System.Drawing.Imaging.PixelFormat.Format32bppArgb);

    for(int i=10;i<71;i++){
        for(int p=10;p<71;p++){
            canvas.SetPixel(i,p,Color.Lime);
        }
    }
    canvas.MakeTransparent(Color.Lime);
    // return the picture
    return canvas;
}
役に立ちましたか?

解決

画像の使用方法または表示方法によって異なります。 PNGとGifは、透明度をサポートする2つのファイル形式です。

透明度のビットマップ設定には、次を使用しました:

Graphics.FromImage(bitmap).FillRectangle(Brushes.Transparent、...)で透明にしたい領域を設定し、ファイルをPNGとして保存して透明な画像を取得します。

MakeTransparentメソッドも試してみましたが、問題が発生し、Brushes.Transparentが私の状況に合った解決策でした。

これにより、検討する方向性が与えられます。

最後の注意点として、幅と高さのみでビットマップオブジェクトを作成します。ピクセル形式や、ビットマップ= New Bitmap(width、height);と呼ばれるものは指定しません。

他のヒント

[...]Format16bppRgb555

ここでは、アルファチャネル(... Rgba)を含む何らかの形式を使用してみてください。また、出力が後で画像になる場合は、アルファチャネルをサポートするPNGなどの画像形式を使用してください。

おそらく、画像形式をFormat16bppArgb1555に変更する必要があります。

今、Format32bppArgbまたはFormat16bppRgb555を使用しています。これは、アルファ情報のないピクセルあたり16ビットです。透明性を確保するには、アルファチャネルまたはアルファビットが必要です。

SetPixel()を Color.Transparent ? Color.Limeの代わりに MakeTransparent ?そして、他の人が指摘したように。アルファチャネルを備えたピクセル形式が必要です。

MakeTransparent関数は機能します。 「灰色のパッチ」があります。 TransparencyKeyが正しくないためです。 TransparencyKeyプロパティをグレーパッチの色に設定すると、画像が表示されるときにグレーパッチが実際に透明になることがわかります。私が手に入れたデフォルトのグレーのパッチには、「Control」というラベルが付いていました。色、または基本的にWindowsフォームのデフォルトの背景色。 TransparencyKeyをグレーのパッチ(私の場合はControl)に変更すると、ハードドライブにファイルを保存せずに問題が解決します。乾杯。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top