В одном случае вы можете добавить файл ресурса в свой проект. Затем отбросьте ресурс. Вы сможете решить это следующим образом:
My.Resources.Resource1.ImgName
Resource1
Ваше имя файла ресурсов и ImgName
это имя ресурса здесь. Но вам нужно сделать жесткий код для каждого вызова. Тем не менее, вы получаете полную поддержку intellisense с проверкой типов.
Если вы не хотите, жесткий код, здесь урезанная версия моего рабочего кода:
Imports System.Reflection
Imports System.Xml.Linq
Public Class EmbeddedResourceManager
Private Class EmbeddedResourceManagerCore
Private Shared _executingAssembly As Assembly
Private Shared _resourcePrefix As String
Shared Sub New()
_executingAssembly = Assembly.GetExecutingAssembly
_resourcePrefix = _executingAssembly.GetName.Name & "."
End Sub
Public Shared Function GetStream(resourceRelName As String) As IO.Stream
Return _executingAssembly.GetManifestResourceStream(_resourcePrefix & resourceRelName)
End Function
End Class
Public Shared Function GetImage(ByVal resourceName As String) As Bitmap
Return New Bitmap(EmbeddedResourceManagerCore.GetStream(resourceName))
End Function
End Class
Поэтому, когда вам нужно, просто позвонить EmbeddedResourceManager.GetImage
и передать имя ресурса, как он появляется в вашем проекта (файл изображения должен быть прикреплен к проекту). Вы должны иметь Build Action
для изображения, которое должно быть установлено на Embedded Resource
.
Это слагает весь ваш ресурс в исполняемый файл, который имеет как преимущества, так и недостатки, в зависимости от ситуации. Тем не менее, он должен работать на ваши нужды, так как я предполагаю, что количество разных покемонов ограничено и не меняется на протяжении всей игры (т. Е. Загружено с стороннего сервера в режиме реального времени и т. Д.).
При попытке использовать свой код, я получаю ошибку о том, что тип «растровый» является не определено, это то, что вы определили в своем коде, или я что-то пропустил? – YourRuler
@ user2259724: [Растровое изображение] (http://msdn.microsoft.com/en-ca/library/system.drawing.bitmap.aspx) является стандартным классом .NET. Для этого требуется пространство имен System.Drawing, но вы должны добавить это автоматически при создании проекта WinForms. – Neolisk
А, я начал проект как консольное приложение. Так что это объясняет, я импортировал его, и это сработало, спасибо! – YourRuler