Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.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# 从嵌入式资源返回null的自定义映像_C#_Winforms - Fatal编程技术网

C# 从嵌入式资源返回null的自定义映像

C# 从嵌入式资源返回null的自定义映像,c#,winforms,C#,Winforms,我试图从我的解决方案中加载一个图像,该图像作为jpg嵌入,但它说它不在。 我向这两个形象宣布,我是这样的 Image selectedImage = null; Image emptyImage = null; selectedImage = Image.FromStream(System.Reflection.Assembly. GetExecutingAssembly().GetManifestResourceStream(@"selected.png")); emptyImage = I

我试图从我的解决方案中加载一个图像,该图像作为jpg嵌入,但它说它不在。 我向这两个形象宣布,我是这样的

Image selectedImage = null;
Image emptyImage = null;
selectedImage = Image.FromStream(System.Reflection.Assembly.
GetExecutingAssembly().GetManifestResourceStream(@"selected.png"));

emptyImage = Image.FromStream(System.Reflection.Assembly
.GetExecutingAssembly().GetManifestResourceStream(@"empty.png"));
我需要自定义绘制一个复选框,以便它保留样式 您可以看到,这些图像包含在我的解决方案中

它们都被选为嵌入式资源

然后,我使用此自定义函数将复选框图像绘制到约会上

private void dxsourceNetAppointments_CustomDrawAppointment(object sender, CustomDrawObjectEventArgs e)
        {
            VerticalAppointmentViewInfo apptViewInfo = e.ObjectInfo as VerticalAppointmentViewInfo;
            if (apptViewInfo != null)
            {
                Rectangle imageBounds = GetImageBoundsFromViewInfo(apptViewInfo);
                e.DrawDefault();
                bool isCustomSelected = (bool)apptViewInfo.Appointment.CustomFields["CheckedIn"];
                e.Graphics.DrawImage(isCustomSelected ? selectedImage : emptyImage, imageBounds);
                e.Handled = true;
            }
        }
  }
关于为什么我的图像可能为空,我想你不必提供完整的路径,除非它在磁盘上

编辑2

我尝试了一个资源文件,但出于某种原因,它也表示为null

  selectedImage = WindowsFormsApplication1.SchedurlesImages.selected;
  emptyImage = WindowsFormsApplication1.SchedurlesImages.empty;

调用
GetManifestResourceStream
时,需要使用程序集名称对其进行限定,例如:

emptyImage = Image.FromStream(System.Reflection.Assembly
  .GetExecutingAssembly()
  .GetManifestResourceStream(@"SMBAScheduler.empty.png"));

我是否可以建议使用基于RESX的资源文件,而不是使用嵌入式资源?它将代码生成一个包装器,您可以直接使用静态属性。

您好,谢谢您的回答。您可以提供一个不使用GetManifiest而不使用stream的示例,这样就意味着我可以抓取图像有更好的方法吗?我可以不使用gdi只画一个复选框吗?在all@davidbuc使用resx文件。如果使用资源,我将如何引用图像file@davidbuc它将生成一个类文件:
YourResxResources.YourResourceName