当前位置: 首页 > 编程语言 > C#

C#+GL控件混合背景与窗体分享

时间:2023-04-11 01:41:41 C#

C#+GL控件混合背景与窗体*编辑*我通过更改方法解决了加载源图像的问题,所以现在我使用位图和位图数据结构:Bitmapbitmap=newBitmap("image.png");BitmapDatadata=bitmap.LockBits(newSystem.Drawing.Rectangle(0,0,bitmap.Width,bitmap.Height),ImageLockMode.ReadOnly,System.Drawing.Imaging.PixelFormat.Format32bppArgb);我确定我的png源有4个通道,黑色背景上的alpha0这是原始图像:http://imageshack.com/a/img801/517/u2z8.png这就是问题所在:http://imageshack。com/a/img40/1729/zezj.jpg上面是使用GLControl的贴图,下面是WindowsForm的Picturebox,我要做的是让GLControl的黑色背景透明。我启用了混合上限并使用GL.BlendFunc(BlendingFactorSrc.SrcAlpha,BlendingFactorDest.OneMinusSrcAlpha);所以我不认为这是问题所在。也许问题出在纹理环境上?GL.TexEnv(TextureEnvTarget.TextureEnv,TextureEnvParameter.TextureEnvMode,GL_MODULATE);由于空域限制,可能无法直接混合OpenGL和WPF。但是,您描述的效果可以使用间接方法实现:创建一个GLControl,但保持不可见(即不要将其附加到WindowsFormsHost)创建一个帧缓冲区对象(文档和示例代码)将OpenGL场景渲染到帧缓冲区对象使用GL。GetTexImage2D()检索渲染场景在常规WPFPictureBox中显示结果这样您就可以在最终PictureBox上使用任何和所有WPF效果,包括透明度。(吹毛求疵:貌似你用的是OpenTK.GLControl,不是Tao.SimpleGlControl,功能差不多,但是API和功能完全不同。)以上是C#学习教程:C#+GL控件混合背景如果forms分享的所有内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: