2016-03-25 16 views
0

gömülü DLL kaynaktan veri geçirmek için çalışırken burada yerine System.Drawing.Bitmap"Kaynak türden hedef türüne yayınlanamaz" atılan eror; bir alan Burada

namespace DaiMangou.Properties { 
    using System; 
    using UnityEngine; 

    /// <summary> 
    /// A strongly-typed resource class, for looking up localized strings, etc. 
    /// </summary> 
    // This class was auto-generated by the StronglyTypedResourceBuilder 
    // class via a tool like ResGen or Visual Studio. 
    // To add or remove a member, edit your .ResX file then rerun ResGen 
    // with the /str option, or rebuild your VS project. 
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 


    internal class GeneralImageResources { 


    internal static Texture2D ScaleHandle { 
       get { 
        object obj = ResourceManager.GetObject("ScaleHandle", resourceCulture); 
        return ((Texture2D)(obj)); 
       } 
      } 

} 

başka komut benim diğer sınıfı

arasında UnityEngine.Texture2D sınıfını kullanmak modifiye zaman otomatik olarak oluşturulan kaynak sınıftır

Bu

public class ScaleHandle 
{ 

public Texture2D scaleHandleTexture = DaiMangou.Properties.GeneralImageResources.ScaleHandle; 

} 
Ancak bir hatayı

"ınvalidcastexception atar: canno Kaynak türden hedef tipine dökülme. "

nasıl scaleHandleTexture alana ScaleHandle doku geçmek?

Birlik Motor yüzden gerçekten cant kullanmak Bitmap

+3

Açıkçası, cast istisnası satırdan 'return ((Texture2D) (obj)), '(kaynağınız' Texture2D' türünde olmamalıdır) –

+0

bana bildirdiğiniz için teşekkürler. +1 Bunu nasıl aşacağımı bilmiyorum. Dll'yi kullanacak belirli bir platformla karşılaştırılabilir sorunlar var. Kaynak yapmak bir Texture2D türü etrafında tek yoldu. ScaleHandle dokusunu scaleHandleTexture alanına başarılı bir şekilde nasıl geçiyorum. Şimdiye kadar yardım için –

cevap

0

Birincisi, don' System.Drawing kullanımını desteklemez t BitmapImage tipine onlara izin, sizin otomatik olarak oluşturulan kaynak dosyasını değiştirin. Sonra

herebyte[] için BitmapImage (p ile uyarı dönüştürmek koddur) Resim türü için doğru encoder kullanarak sanat: Sum olarak

Texture2D.LoadImage(data); 

:

public class ScaleHandle 
{ 
    protected static Texture2D ImageToTexture(Image srcImage) 
    { 
     byte[] data; 
     JpegBitmapEncoder encoder = new JpegBitmapEncoder(); 
     encoder.Frames.Add(BitmapFrame.Create(srcImage)); 
     using(MemoryStream ms = new MemoryStream()) 
     { 
      encoder.Save(ms); 
      data = ms.ToArray(); 
     } 
     Texture2D tex = new Texture2D(2, 2); 
     tex.LoadImage(data); 
     return tex; 
    } 

    public Texture2D scaleHandleTexture = ImageToTexture(DaiMangou.Properties.GeneralImageResources.ScaleHandle); 
} 

PS:

byte[] data; 
JpegBitmapEncoder encoder = new JpegBitmapEncoder(); 
encoder.Frames.Add(BitmapFrame.Create(DaiMangou.Properties.GeneralImageResources.ScaleHandle)); 
using(MemoryStream ms = new MemoryStream()) 
{ 
    encoder.Save(ms); 
    data = ms.ToArray(); 
} 

Ve Nihayet hereTexture2D dönüştürmek için kod ben Birliğin ne olduğunu bile bilmiyorum, bu yüzden değerinin ne olduğu için alın.

+0

+1. Kodu biraz sonra test edeceğim ve nasıl olacağını bileceğim. –

+0

Bunu benim için çalışmaya alamadım ama teşekkür ederim. –

İlgili konular