2016-03-20 16 views
-1

私は現在、複数の画像を1つのコンポジットにレイヤーしようとしています。GetManifestResourceStreamで自分の画像を見つけることができないのはなぜですか?

通常、リソースからイメージを取得してピクチャボックス/ etcに配置するために、単純に ".Image = My.Resources.ResourceManager.GetObject(filename)"とします。

しかし、オブジェクトを受け入れないビットマップに転送する必要があります。私はいくつかのGoogleの結果から下のコードを見つけましたが、ファイルは "nullの値が 'ストリーム'には有効ではないというバグがあり、pHeadはNothingです。そのように私はコードがファイルを見つけることができないと推定しています。

以下のコードの最終行にブレークが発生しています。

いずれのヘルプや簡単な選択肢も大歓迎です。

Dim GenderText As String = "" 
Select Case ListCharacter(ActiveChar).Gender 
    Case eGender.Male : GenderText = "masc" 
    Case eGender.Female : GenderText = "fem" 
End Select 

Dim Prefix As String = "" 
Dim Suffix As String = ".png" 
Dim myAsm As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly() 

' Load Head Image 
' e.g. prt_fem_head_1_white.png 
Dim headImageName As String = "prt_" & GenderText & "_head_" & CharApp.HeadStyle & "_" & CharApp.SkinColour 
Dim pHead As Bitmap = New Bitmap(myAsm.GetManifestResourceStream(Me.GetType, headImageName & Suffix)) 

Screenshot

PS。また、接尾辞付き/なしのバグもあります。

編集#1;

リソースのルートの所在地に必要なプレフィックスが見つかりました。しかし、それはまだどんなバリエーションにも作用していません。 Screenshot2

編集#2;

リソースの場所をそのプロパティでダブルチェックしました。

"C:\ユーザーはプロジェクト\ Storytime \ Storytime \リソース\のprt_fem_head_1_white.png \ Visual Studioの2015 \ CLEO \ドキュメント\" 解決

+0

私は他の場所でオブジェクトとして使用している既存の画像に、より正確にコードを破壊しようとしました。私は後書きを試みました。 - Storytime.Resources.Hoof.png ::: - Storytime.Resources.Hoof ::: - Resources.Hoof.png ::: - Resource.Hoof ::: - 蹄::: - 蹄。 png ::: –

+0

さて、あなたは間違っている。 ResourceReaderを使用してマニフェストリソースストリームをデコードし、ビットマップをストリームから掘り起こす必要があります。それでもResourceManager.GetObject()が提供するオブジェクトとまったく同じオブジェクトが得られます。 「オブジェクトを受け入れない」とは、間違った質問をする可能性があります。 –

答えて

-1

。私は、リソースデザイナーコードで見つけたよりシンプルなコードを変更しました。以下は非常に素朴で整頓が必要ですが、これはいくつかの画像を1つのピクチャボックスに構築する方法です。

' Load Face 
    Dim PortraitLocation As New Point(573, 51) 
    Dim CharApp As New Character.cAppearance : CharApp = ListCharacter(ActiveChar).Appearance 
    ' Dim pHead, pEyes, pNose, pMouth, pBase, pHair As New PictureBox 
    Dim FaceCanvas As New PictureBox 

    Dim GenderText As String = "" 
    Select Case ListCharacter(ActiveChar).Gender 
     Case eGender.Male : GenderText = "masc" 
     Case eGender.Female : GenderText = "fem" 
    End Select 

    Dim resourceCulture As Global.System.Globalization.CultureInfo 

    Dim headImageName As String = "prt_" & GenderText & "_head_" & CharApp.HeadStyle & "_" & CharApp.SkinColour 
    Dim obj As Object = My.Resources.ResourceManager.GetObject(headImageName, resourceCulture) 
    Dim phead As Bitmap = CType(obj, System.Drawing.Bitmap) 

    Dim eyesImageName As String = "prt_" & GenderText & "_eyes_" & CharApp.EyeStyle & "_" & CharApp.SkinColour 
    Dim obj2 As Object = My.Resources.ResourceManager.GetObject(eyesImageName, resourceCulture) 
    Dim pEyes As Bitmap = CType(obj2, System.Drawing.Bitmap) 

    Dim noseImageName As String = "prt_" & GenderText & "_nose_" & CharApp.NoseStyle & "_" & CharApp.SkinColour 
    Dim obj3 As Object = My.Resources.ResourceManager.GetObject(noseImageName, resourceCulture) 
    Dim pNose As Bitmap = CType(obj3, System.Drawing.Bitmap) 

    Dim mouthImageName As String = "prt_" & GenderText & "_mouth_" & CharApp.MouthStyle & "_" & CharApp.SkinColour 
    Dim obj4 As Object = My.Resources.ResourceManager.GetObject(mouthImageName, resourceCulture) 
    Dim pMouth As Bitmap = CType(obj4, System.Drawing.Bitmap) 

    Dim hairImageName As String = "prt_" & GenderText & "_hair_" & CharApp.HairStyle & "_" & CharApp.HairColour 
    Dim obj5 As Object = My.Resources.ResourceManager.GetObject(hairImageName, resourceCulture) 
    Dim pHair As Bitmap = CType(obj5, System.Drawing.Bitmap) 

    Dim bodyImageName As String = "prt_" & GenderText & "_body_" & CharApp.SkinColour 
    Dim obj6 As Object = My.Resources.ResourceManager.GetObject(bodyImageName, resourceCulture) 
    Dim pBody As Bitmap = CType(obj6, System.Drawing.Bitmap) 


    Dim g As Graphics = Graphics.FromImage(pBody) 
    g.DrawImage(phead, 0, 0) 
    g.DrawImage(pEyes, 0, 0) 
    g.DrawImage(pNose, 0, 0) 
    g.DrawImage(pMouth, 0, 0) 
    g.DrawImage(pHair, 0, 0) 
    With FaceCanvas 
     .Location = PortraitLocation 
     .Size = New Size(50, 50) 
     .Image = pBody 
     .BackColor = Color.Transparent 
    End With 
    Me.Controls.Add(FaceCanvas) 

pic0

pic1
関連する問題