상세 컨텐츠

본문 제목

Xamarin.Forms 자마린의 기초(1) - 내부 이미지 사용

Xamarin

by 경밤 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");

 

반응형

관련글 더보기