Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SharpDX.Direct2D1.bitmap的灰度8BPP位图_C#_Vb.net_Sharpdx - Fatal编程技术网

C# SharpDX.Direct2D1.bitmap的灰度8BPP位图

C# SharpDX.Direct2D1.bitmap的灰度8BPP位图,c#,vb.net,sharpdx,C#,Vb.net,Sharpdx,我目前正在使用SharpDX.Direct2D1制作一个2D应用程序 这是我的2D deviceContext设置,可以正常工作 m_swapchaindesc=新的SwapChainDescription() 与m_swapchaindesc .BufferCount=2 .ModeDescription= 新模式说明(control.Width、control.Height、, 新的Rational(60,1),格式为.R8G8B8A8_UNorm) .IsWindowed=True .Ou

我目前正在使用
SharpDX.Direct2D1
制作一个2D应用程序

这是我的2D deviceContext设置,可以正常工作

m_swapchaindesc=新的SwapChainDescription()
与m_swapchaindesc
.BufferCount=2
.ModeDescription=
新模式说明(control.Width、control.Height、,
新的Rational(60,1),格式为.R8G8B8A8_UNorm)
.IsWindowed=True
.OutputHandle=控制.Handle
.SampleDescription=新的SampleDescription(1,0)
.SwapEffect=SwapEffect.Discard
.Usage=Usage.RenderTargetOutput
以
SharpDX.Direct3D11.Device.CreateWithSwapChain(DriverType.Hardware、DeviceCreationFlags.BgraSupport或DeviceCreationFlags.Debug、m_swapchaindesc、m_Device、m_swapChain)
将DXG设备的尺寸调整为SharpDX.DXGI.Device=m_Device.QueryInterface(SharpDX.DXGI.Device的)()
m_2dDevice=新的SharpDX.Direct2D1.Device(dxgiDevice)
m_d2dContext=新的SharpDX.Direct2D1.DeviceContext(m_2Device,SharpDX.Direct2D1.DeviceContextOptions.None)
m_properties=新的位图属性(新的SharpDX.Direct2D1.PixelFormat(SharpDX.DXGI.Format.R8G8B8A8_UNorm,SharpDX.Direct2D1.AlphaMode.Premultiplied),96,96)
m_backBuffer=m_swapChain.GetBackBuffer(曲面的)(0)
m_2dTarget=新的SharpDX.Direct2D1.Bitmap(m_d2dContext、m_backBuffer、m_属性)
m_d2dContext.Target=m_2dTarget
我的问题是:我想在我的deviceContext上绘制灰度8bpp位图,这意味着我不需要它是32位/像素,这需要占用大量内存。我希望它只有8位的内存。问题是,当我这样做时,这意味着设置我的
BitmapProperties
,只有
格式.R8_Unorm
格式.A8_Unorm
,这似乎很有趣,因为我猜它们只有8bpp。但是,当我放置此格式并尝试实例化我的
SharpDX.Direct2D1.Bitmap
时,它返回一条错误消息,显示错误的像素格式

我意识到在创建位图时,只有
Format.R8G8B8A8_Unorm
似乎有效,而我并不需要它


你们中有人在SharpDX上使用过8bpp灰度位图吗

不能将8BPP位图与SharpDX(DirectX)一起使用。这不是DirectX支持的格式。要显示灰度图像,必须将rgb的所有值设置为相同的值,或者对图像应用着色器,将所有颜色转换为灰色