0

C#を使用しています。DirectX を使用してポイントを描画する必要があり、半透明にする必要があります。頂点を transformColored と宣言し、色の値を次のように設定しました。

 vertices[i].Color = Color.FromArgb(20,0,0,255).ToArgb();

これはかなり透明な青のはずですが、私が得たのは不透明な青でした。アルファ値にどのような値を使用しても、常に完全に不透明になります。理由はありますか?変換されたカラー フィールドがアルファ値をサポートすることを願っています。

前もって感謝します。

描画コードは次のとおりです。

device.Clear(ClearFlags.Target, System.Drawing.Color.White, 1.0f, 0);

device.RenderState.AlphaBlendEnable = true;

device.RenderState.AlphaSourceBlend = Blend.SourceAlpha;

device.RenderState.AlphaDestinationBlend = Blend.InvSourceAlpha;

device.RenderState.BlendOperation = BlendOperation.Add;

CustomVertex.TransformedColored[] vertices = new CustomVertex.TransformedColored[N];

for (int i = 0; i < N; i++)
{
   vertices[i].Position = new Vector4(2.5f + (g_embed[i, 0] - minx) * (width - 5.0f) / maxx, 2.5f + (g_embed[i, 1] - miny) * (height - 5.0f) / maxy, 0f, 1f);//g_embed, minx, width,maxx, miny,height, maxy are all predifined

   vertices[i].Color = Color.FromArgb(20, 0, 0, 255).ToArgb();
}

 device.BeginScene();

 device.VertexFormat = CustomVertex.TransformedColored.Format;

 device.DrawUserPrimitives(PrimitiveType.PointList, N, vertices);

 device.EndScene();

 device.Present();

 this.Invalidate();
4

1 に答える 1