-
Xamarin.Forms 자마린의 기초(1) - 내부 이미지 사용Xamarin 2021. 2. 12. 19:05반응형
내부 이미지 사용, Visual Studio에 추가한 이미지를 어떻게 자마린에서 사용할까요?
그냥은 안됩니다.
이미지 자원 제공 클래스를 만들어서 쓸 수 있습니다.
Xamarin.Forms 솔루션을 만들면 공용 프로젝트, Android 프로젝트, iOS 프로젝트까지 있습니다.
공용 프로젝트에 원하는 이미지를 [마우스 왼쪽 클릭] -> [추가] -> [기존 항목] 해서, 추가하도록 합니다.
또한 속성창에서 그 이미지에 대한 빌드작업을 [포함 리소스]로 변경해주도록 합시다.
준비는 끝났습니다. 이제 코드를 짜고 xaml에서 테스트해볼 시간입니다.
ImageResourceExtension.cs
공용 프로젝트에 위 클래스를 하나 만들어준 후, 아래의 코드를 넣습니다.
using System; using System.Reflection; using Xamarin.Forms; using Xamarin.Forms.Xaml; namespace 프로젝트이름 { [ContentProperty (nameof(Source))] class ImageResourceExtension:IMarkupExtension { public string Source { get; set; } public object ProvideValue(IServiceProvider serviceProvider) { if (Source == null) return null; var imgSource = ImageSource.FromResource(Source, typeof(ImageResourceExtension).GetTypeInfo().Assembly); return imgSource; } } }
xaml 에서 사용
먼저 최상단 Page 태그의 xmlns:local을 clr-namespace:프로젝트이름으로 해서 적어줍시다.
그리고 원하는 위치에서 아래의 xaml 코드조각을 이용하여서 사용합니다.
불러오는 이미지 자원의 경로 규칙은 [프로젝트이름.내부폴더.이미지.확장자] 입니다. 만약 프로젝트 바로 밑에 추가했다면 [프로젝트이름.이미지.확장자] 이겠습니다.
<Image Source="{local:ImageResource 프로젝트이름.MyImage.png}"/>
xaml.cs 에서 사용
c# 스크립트에서 사용하는 방법은 간단합니다. 아래와 같이 간단한 함수를 하나 만들어줍시다.
private ImageSource getResourceImage(string source) { return ImageSource.FromResource(source, typeof(ImageResourceExtension).GetTypeInfo().Assembly); }
그리고 나서 함수를 호출할때 매개변수의 source는 똑같은 규칙을 따라서 사용합니다.
Source = getResourceImage("프로젝트.MyFolder.MyImage.png");
반응형'Xamarin' 카테고리의 다른 글
Xamarin.Forms 자마린의 기초(4) - APK 만들기 (PlayConsole에 업로드 가능함) (0) 2021.02.12 Xamarin.Forms 자마린의 기초(3) - 네이티브 기능 사용 - 진동 기능 사용 (0) 2021.02.12 Xamarin.Forms 자마린의 기초(2) - 아이콘 변경 (0) 2021.02.12 Xamarin.Forms 자마린에서 애드몹 Admob 사용하기 *(Android) (0) 2021.02.10