什么是正确的包含Image CLI类

时间:2012-11-21 15:08:35

标签: .net c++-cli wic

我找不到那个使用CLI的Image ^类的rigth命名空间。它来自http://msdn.microsoft.com/en-us/library/aa970689.aspx该网站。问题是微软没有公开我想要导入的东西,所以我甚至不知道他们在脑子里有什么课程。

我想添加什么来使这项工作(图像类)?

Error   1   error C3083: 'Controls': the symbol to the left of a '::' must be a type    C:\Users\Duke\Documents\Visual Studio 2010\Projects\Jpg\Jpg\Jpg.cpp 9   1   Jpg
Error   2   error C2039: 'Image' : is not a member of 'System::Windows' C:\Users\Duke\Documents\Visual Studio 2010\Projects\Jpg\Jpg\Jpg.cpp 9   1   Jpg
Error   3   error C2871: 'Image' : a namespace with this name does not exist    C:\Users\Duke\Documents\Visual Studio 2010\Projects\Jpg\Jpg\Jpg.cpp 9   1   Jpg

    #include "stdafx.h"
    #include "Form1.h"
    #using <mscorlib.dll> //requires CLI
    using namespace System;
    using namespace System::IO;
    using namespace System::Windows::Media::Imaging;
using namespace System::Windows::Controls::Image;
        Stream^ imageStreamSource = gcnew FileStream("C:\Users\Duke\Desktop\heart.jpg", FileMode::Open, FileAccess::Read, FileShare::Read);

                JpegBitmapDecoder^ decoder = gcnew JpegBitmapDecoder(imageStreamSource, BitmapCreateOptions::PreservePixelFormat, BitmapCacheOption::Default);
                BitmapSource^ bitmapSource = decoder->Frames[0];//< --mamy bitmape
                // Draw the Image
                Image^ myImage = gcnew Image();
                myImage->Source = bitmapSource;
                myImage->Stretch = Stretch::None;

2 个答案:

答案 0 :(得分:0)

鉴于您正在使用WIC类(例如。BitmapDecoderBitmapSource),您将希望避免涉及System::Drawing命名空间的任何内容,这些命名空间都是老式的GDI 。要么在using指令中不引用这些名称空间,要么显式使用整个System::Windows::Media名称空间。

您所关注的具体Image班级可能是System::Windows::Controls::Image(文档here)。

您需要在项目中添加对WIC包装器和一些支持程序集的引用,以便链接到相应的DLL。

  • PresentationCore 包含您需要的所有主要图像编解码器和操作类,这在JpegBitmapDecoder文档中有所提及。
  • WIC包装器(FreezableDispatcherObject)使用的一些其他依赖项需要
  • WindowsBase
  • System.Xaml 也可能作为依赖...出现在我在这里使用的WIC-C#项目中,没有该程序集的构建会由于System.Windows.Markup.IUriContext的缺失而产生错误。这可能是我使用WIC程序集的人工制品(但我当然不使用Xaml或IUriContext)。
  • PresentationFramework 提供Image类及其依赖项,如the appropriate documentation
  • 中所述

答案 1 :(得分:0)

System :: Windows :: Controls命名空间(对于Image类)需要PresentationFramework.dll作为参考,System :: Windows :: Media :: Imaging(对于BitmapSource类)命名空间需要PresentationCore.dll。

您是否在项目中包含了这两个引用?