GVKun编程网logo

System.Drawing.Image流C#

20

本文将介绍System.Drawing.Image流C#的详细情况,。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于.net–System.Drawing(G

本文将介绍System.Drawing.Image流C#的详细情况,。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于.net – System.Drawing(GDI)vs System.Windows.Media(WPF)vs Direct2D DirectWrite WIC、android – 为什么AVD Manager中缺少Intel x86 Atom System Image(API 15)、asp.net-mvc-3 – 在ASP.NET MVC 3视图中渲染System.Drawing.Image的最佳方法、C# Pen绘制虚线(System.Drawing.Pen与System.Windows.Media.Pen)的知识。

本文目录一览:

System.Drawing.Image流C#

System.Drawing.Image流C#

System.Drawing.Image我的程序中有一个。该文件不在文件系统中,而是保存在内存中。我需要从中创建一个流。我将如何去做呢?

答案1

小编典典

请尝试以下操作:

public static Stream ToStream(this Image image, ImageFormat format) {  var stream = new System.IO.MemoryStream();  image.Save(stream, format);  stream.Position = 0;  return stream;}

然后,您可以使用以下命令:

var stream = myImage.ToStream(ImageFormat.Gif);

用适合您的方案的任何格式替换GIF。

.net – System.Drawing(GDI)vs System.Windows.Media(WPF)vs Direct2D DirectWrite WIC

.net – System.Drawing(GDI)vs System.Windows.Media(WPF)vs Direct2D DirectWrite WIC

对于处理图像并将用C#编写的Desktop Vista应用程序,您会推荐以下哪种技术(或者您推荐的组合:System.Drawing(GDI)vs System. Windows.Media vs Direct2D DirectWrite WIC.图像处理将涉及各种原始绘图,填充,使用文本,旋转,平移,缩放,直接使用指针处理像素数据.一般来说,上述技术在操作位图方面有多好?

此外,如果有人知道一个好的和详细的比较图表,列出了并排的不同功能和等价物,以及不支持的,这将是伟大的!例如,WPF和Direct2D中是否存在ColorMatrix等价物?例如,在研究了SharpDX对Direct2D的实现后,我留下的印象是即使微软将其定位为GDI的完全替代品,我也无法在Direct2D中找到所有GDI的功能.

另外,考虑到它是2014年,你会说至少对于图像处理(如果不是UI的一部分,WPF似乎是更好的选择),GDI在接下来的5年左右会好吗?或者我应该真的考虑使用所有3种技术,哪种方法效果最好?

谢谢.

解决方法

我目前在一个视觉密集型的C#/ WPF项目中工作,并且在 Python中使用图像处理做了一些最好的黑客攻击.

根据您的预期用途,我将使用以下方法:

>尽可能使用WPF名称空间,即System.Windows.Media.据我所知,System.Drawing和GDI通常使用非托管资源,这可能会产生不希望的,可避免的问题;
>尽可能严格地使用MVVM架构.也就是说,您有一个仅用于显示信息的View层,以及包含业务逻辑的Model和viewmodel层.虽然有些人可能会说视觉内容不属于viewmodel层,但如果你的应用程序处理图像操作,那么你的业务逻辑就像定义一样与View相关(我花了很长时间才弄明白这一点).
>如有疑问,请使用多维数组(在Model / viewmodel中)执行图像处理,并将这些数组绑定到View(使用ValueConverter通过DataBinding).

这样,例如,您可以使用ImageLayerviewmodel类来表示Layer,其中Data属性(或Value或PixelArray或Raster,无论如何)是double [height,width,depth].

我可以详细说明一下,但我不确定是否正确回答你的问题,所以如果你愿意,可以写任何评论.

android – 为什么AVD Manager中缺少Intel x86 Atom System Image(API 15)

android – 为什么AVD Manager中缺少Intel x86 Atom System Image(API 15)

我运行 android工具并下载了 Android 4.0.3 SDK和2.3.3 SDK,包括Intel Atom x86 System Image.

我启动了AVD Manager并试图创建一个模拟器.我可以看到2.3.3的英特尔凌动图像,但不是4.0.3.

我试图重新安装它,但仍然没有在AVD中看到它.

有谁知道这是什么问题?

解决方法

在Android SDK Manager中,Intel x86 Atom System Image应该在Android 4.0.3(API 15)下显示.

asp.net-mvc-3 – 在ASP.NET MVC 3视图中渲染System.Drawing.Image的最佳方法

asp.net-mvc-3 – 在ASP.NET MVC 3视图中渲染System.Drawing.Image的最佳方法

我有一个System.Drawing. Image类型的对象,并希望在视图中显示此图像.最好的方法是什么?

我找到了一些可能适合这种情况的自定义Html Helper方法.还找到了一个使用新动作方法的示例,该方法返回FileContentResult以便关闭此类内容.我想知道什么技术是最好和最容易实现的.

编辑

更具体地说,我在Controller中的System.Drawing.Image变量中有图像,我希望在视图中显示该变量.

解决方法

public ActionResult GetImg()
{
    string imageFile = System.Web.HttpContext.Current.
                                 Server.MapPath("~/Content/tempimg/unicorn.jpg");
    var srcImage = Image.FromFile(imageFile);
    using (var streak = new MemoryStream())
    {
      srcImage.Save(streak,ImageFormat.Png);
      return File(streak.ToArray(),"image/png");
    }     
}

现在你可以在这样的视图中调用它

<img src="@Url.Action("GetImg","YourControllerName")"  alt="alt text"/>

C# Pen绘制虚线(System.Drawing.Pen与System.Windows.Media.Pen)

C# Pen绘制虚线(System.Drawing.Pen与System.Windows.Media.Pen)

  一.绘制虚线的方法

  1.  GDI绘制,使用的是System.Drawing.Pen
        Pen pen = new Pen(Color.Red, 1);
            pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Custom;
            pen.DashPattern = new float[] { 5, 5 };
            Graphics gh = this.CreateGraphics();
            gh.DrawLine(pen, 10, 150, 500, 150);

    这种方法使用的Pen 是System.Drawing.Pen,它的DashStyle属性类型是个枚举类型,可以直接设置为DashStyle.Custom,这样就可以使用虚线了

    必须提出的一点是注意:这个更适合于WinForm工程使用,也是在我绘制虚线时查找资料提示最多的选项,但WPF类型显示是不能使用这个Pen类型的(System.Drawing)而是System.Windows.Media类型

 

  2.DrawingContext绘制,使用的是System.Windows.Media.Pen

    这种绘制一般都是Override OnRender方法时居多,我也是在这种场景下有个绘制虚线的需求,所以查了很多资料,先上代码

var pen = new Pen { Brush = Brushes.DeepSkyBlue, Thickness = 2};
                DashStyle dashStyle = new DashStyle();
                dashStyle.Offset = 0;
                dashStyle.Dashes = new DoubleCollection();
                dashStyle.Dashes.Add(2);
                dashStyle.Dashes.Add(5);
                pen.DashStyle = dashStyle;
                dc.DrawGeometry(null, pen, geometry);

    上述Pen类型为System.Windows.Media.Pen类型下的Pen,其DashStyle是个类,不是个枚举类型了,所以不能直接设置,需要实例化DashStyle对象,然后进行赋值使用

    附:DashStyle元数据,属性信息

    

 

     踩过坑,有个记录。

 

    

关于System.Drawing.Image流C#的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于.net – System.Drawing(GDI)vs System.Windows.Media(WPF)vs Direct2D DirectWrite WIC、android – 为什么AVD Manager中缺少Intel x86 Atom System Image(API 15)、asp.net-mvc-3 – 在ASP.NET MVC 3视图中渲染System.Drawing.Image的最佳方法、C# Pen绘制虚线(System.Drawing.Pen与System.Windows.Media.Pen)的相关信息,请在本站寻找。

本文标签: