ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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");

     

    반응형
Designed by Tistory.