ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãéçºããéã«ã¯ã泚æãã¹ãç¹ããããããããŸããããã¯ããããèšè¿°ããããã¯ãããžãŒã®éžæãã¢ããªã±ãŒã·ã§ã³ã¢ãŒããã¯ãã£ã®éçºããããŠå®éã«ã¯ã³ãŒãã®èšè¿°ã§ããé ããæ©ãããã¢ããªã±ãŒã·ã§ã³ã®ããã¯ããŒã³ãããã«ããããã¹ãŠã®ããžãã¯ãèšè¿°ãããã¢ããªã±ãŒã·ã§ã³ã¯äžè¬ã«æ©èœããç¬éãæ¥ãŸããã...å€èгã¯ãããŸãããããã§ã¯ã䜿çšãããã°ã©ãã£ãã¯ãªãœãŒã¹ã«ã€ããŠæ€èšãã䟡å€ããããŸããã°ã©ãã£ãã¯ã¯ãAndroidã®.apkã§ãiOSã®.ipaã§ããæçµçãªã¢ã»ã³ããªã®ãµã€ãºã®å€§éšåãå ããããã§ããååãšããŠãã¢ãã€ã«ã²ãŒã ã«ã¯å·šå€§ãªã¢ã»ã³ããªãæåŸ ãããŸãããPlayMarketããã¯ãæå€§2 GBã®ããŒã¿ããªã¥ãŒã ãããŠã³ããŒãããå¿ èŠãããå ŽåããããŸããããŠã³ããŒãäžã«Wi-Fiã«æ¥ç¶ã§ããå ŽåããŸãã¯ã¢ãã€ã«ãªãã¬ãŒã¿ãŒãé«éç¡å¶éæ¥ç¶ãæäŸããå Žåã¯ããã®æ¹æ³ãé©ããŠããŸããããããã²ãŒã ã®å Žåãããã¯äºæ³ãããããšã§ããããã®ãµã€ãºã®ããžãã¹ã¢ããªã±ãŒã·ã§ã³ã¯ããããã¯ã©ãããæ¥ãã®ãããšããçåãæããæèµ·ããŸããããžãã¹ã¢ããªã±ãŒã·ã§ã³ã®ã¢ã»ã³ããªã®ãµã€ãºã倧ããçç±ã®1ã€ã¯ããã®äžã«è¡šç€ºããå¿ èŠã®ããã¢ã€ã³ã³ãç»åã®æ°ãå€ãããšã§ãããŸãã倧éã®ã°ã©ãã£ãã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã«æ¯äŸããŠåœ±é¿ããããšãå¿ããªãã§ãã ããã
ã¢ããªã±ãŒã·ã§ã³ã®ã°ã©ãã£ã«ã«ã³ã³ããŒãã³ããäœæããå Žåãå€ãã®å Žåãæ·±å»ãªåé¡ãçºçããŸããæèšããã¿ãã¬ãããŸã§ãéåžžã«å€ãã®ã¢ãã€ã«ããã€ã¹ãããããããã®ç»é¢è§£å床ã¯å€§ããç°ãªããŸãããã®ãããå€ãã®å Žåãæ¢åã®ã¿ã€ãããšã«åå¥ã®ãã¡ã€ã«ã§ã¢ã»ã³ããªã«ã°ã©ãã£ãã¯ãªãœãŒã¹ãå«ããå¿
èŠããããŸããAndroidã®å Žåã¯5éšãiOSã®å Žåã¯3éšãããã¯ãã¹ãã¢ã«ã¢ããããŒãããæçµçãªã¢ã»ã³ããªã®ãµã€ãºã«å€§ãã圱é¿ããŸãã
ãã®èšäºã§ã¯ããã®ãããªç¶æ³ã«ãªããªãããã«ããããã«äœãã§ãããã説æããŸãã
PNG圢åŒãšSVG圢åŒã®æ¯èŒ
PNG圢åŒãšSVG圢åŒã®äž»ãªéãã¯ãPNGããããããã圢åŒã§ãããSVGããã¯ãã«åœ¢åŒã§ããããšã§ãã
ããããããã¯ã¢ãã¿ãŒäžã®ãã¯ã»ã«ã®ã°ãªããã§ãããå°ããªã¢ã€ã³ã³ãã巚倧ãªãããŒãŸã§ãããããå Žæã§äœ¿çšãããŸãããã®ã¿ã€ãã®ã°ã©ãã£ãã¯ã¹ã®å©ç¹ã®äžã§ã次ã®ç¹ã«ã泚æããå¿ èŠããããŸãã
- ã©ã¹ã¿ãŒã°ã©ãã£ãã¯ã¹ã䜿çšãããšããã¡ã€ã«ãµã€ãºãå€§å¹ ã«å€±ãããšãªããã»ãŒãã¹ãŠã®è€éãªå³é¢ãäœæã§ããŸãã
- ç»åã®ã¹ã±ãŒãªã³ã°ãå¿ èŠãªãå Žåãè€éãªç»åã®åŠçé床ã¯éåžžã«éããªããŸãã
- ç»åã®ãããããã衚çŸã¯ãã»ãšãã©ã®I / Oããã€ã¹ã«ãšã£ãŠèªç¶ã§ãã
ãã ããæ¬ ç¹ããããŸãã
ããšãã°ããããããããå®å
šã«ã¹ã±ãŒãªã³ã°ããããšã¯ã§ããŸãããå°ããªç»åãæ¡å€§ãããšãç»åããæ³¡ç«ã¡ãããããæ§æãããã¯ã»ã«ã確èªã§ããŸãã


ãŸãããããã®æ°ãå€ãåçŽãªç»åã¯å€§ããã§ãããããã£ãŠãåçŽãªå³é¢ã¯ãã¯ãã«åœ¢åŒã§ä¿åããããšããå§ãããŸããäžèšã®ãã¹ãŠã¯ãPNG圢åŒãšãã®ä»ã®ã©ã¹ã¿ãŒã°ã©ãã£ãã¯åœ¢åŒã®äž¡æ¹ã«åœãŠã¯ãŸããŸãã
SVG圢åŒã¯ãå®éã«ã¯ã€ã¡ãŒãžã§ã¯ãããŸããããŠã£ãããã£ã¢ã®èšäºã«ãããšã SVGã¯ã¹ã±ãŒã©ãã«ãªãã¯ã¿ãŒã°ã©ãã£ãã¯ã¹ããŒã¯ã¢ããèšèªã§ãããå¿
èŠã«å¿ããŠãã¡ã€ã«ãèªã¿åã£ããç·šéãããã§ããŸãã
ãŸããããŒã¯ã¢ããèšèªã§ããSVGã䜿çšãããšãããã¥ã¡ã³ãå
ã«ãã£ã«ã¿ãŒãé©çšã§ããŸãïŒããšãã°ããŒããããã³ããªã©ïŒããããã¯ããã¥ãŒã¢ãã¬ã³ããªã³ã°ãæ
åœããã¿ã°ãšããŠå®£èšãããŠããŸããã€ãŸããå
ã®ãã¡ã€ã«ã®ãµã€ãºã«ã¯åœ±é¿ããŸããã
äžèšã«å ããŠãSVG圢åŒã«ã¯ä»ã«ãå€ãã®å©ç¹ããããŸãã
- ãã¯ãã«åœ¢åŒãšããŠãSVGã䜿çšãããšãå質ãæãªãããšãªãç»åã®ä»»æã®éšåãæ¡å€§çž®å°ã§ããŸãã
- ã©ã¹ã¿ãŒã°ã©ãã£ãã¯ã¯SVGããã¥ã¡ã³ãã«æ¿å ¥ã§ããŸãã
- HTMLããã³XHTMLããã¥ã¡ã³ããšç°¡åã«çµ±åã§ããŸãã
ãã ãããã®åœ¢åŒã«ã¯æ¬¡ã®ãããªæ¬ ç¹ããããŸãã
- ç»åã®çްéšã现ããã»ã©ãSVGããŒã¿ã®ãµã€ãºã¯éããªããŸããå Žåã«ãã£ãŠã¯ãSVGã¯å©ç¹ãæäŸããã ãã§ãªããã©ã¹ã¿ãŒã倱ãããšããããŸãã
- ç»åã®ããäžéšãæ£ãã衚瀺ããã«ã¯ãããã¥ã¡ã³ãå šäœãèªãå¿ èŠããããããã«ãŒãã°ã©ãã£ãã¯ã¢ããªã±ãŒã·ã§ã³ã§ã®äœ¿çšã®è€éãã
Xamarinãã©ãããã©ãŒã ã§ã¢ãã€ã«ã¢ããªãéçºããå Žåããã1ã€ã®æ¬ ç¹ããããŸãã
ãã®åœ¢åŒã§æ£ããæ©èœããã«ã¯ã远å ã®ã©ã€ãã©ãªãæ¥ç¶ããããåé¿çãæ¢ãå¿ èŠããããŸãã
Xamarin.Androidã§ã®SVG圢åŒã®æäœ
äžèšã®ããã«ãXamarinã¯SVGããã®ãŸãŸã§ã¯ãµããŒãããŠããŸããããã®åé¡ã解決ããã«ã¯ããµãŒãããŒãã£ã®ã©ã€ãã©ãªãŸãã¯VectorDrawableã䜿çšã§ããŸããXamarinã®ã©ã€ãã©ãªã®ã»ãšãã©ãXamarin.Formsã§ã®ã¯ãã¹ãã©ãããã©ãŒã ã®äœ¿çšã«çŠç¹ãåãããŠãããããæè¿ãéçºè ã¯åŸè ããŸããŸã奜ãã§ããŸãããã€ãã£ãandroidã®ãœãªã¥ãŒã·ã§ã³ã¯ãéçºè ã«ãã£ãŠãµããŒããããªããªã£ãŠå€ããªã£ãŠããããç¬èªã«æ§ç¯ããããšãããšæ·±å»ãªåé¡ãçºçããŸãã Xamarinã®ã©ã€ãã©ãªããã®ç¹ã§ãããã§ã¯VectorDrawableã®äœ¿çšãæ€èšããŸãã
ãã®ã¢ãããŒããå®è£ ããã«ã¯ãVector AssetStudioã䜿çšããå¿ èŠããããŸãããããèŠã€ããã®ã¯ç°¡åã§ããå¿ èŠãªã®ã¯AndroidStudioã ãã§ããããã§ã¯ãå§ããŸãããïŒ
- Android Studio File -> New -> New Project;
, â Vector Asset Studio, . - drawable -> New -> Vector Asset;

Asset Studio. Material Design, SVG PSD, xml-. . - Asset Studio

, , . - Next

Xamarin.Android.
AndroidStudioã®ã€ã³ã¹ããŒã«ãå¿
èŠãšããååãªæºåäœæ¥ãæ®å¿µãªããããã®èšäºã®å·çæç¹ã§ã¯ãæ£ããæ©èœãããªã³ã©ã€ã³ã³ã³ããŒã¿ãŒãèŠã€ããããšãã§ããŸããã§ãããæäŸãããSVGãã¡ã€ã«ã倿ããããšãããšãã«ãšã©ãŒãçºçãããã®ãããã°ãVector AssetStudioã䜿çšããæ¹ããããšææãããã®ããããŸãã
ãšã¯ãããå¿ èŠãªãã¡ã€ã«ãåãåã£ãã®ã§ããããžã§ã¯ãã§äœ¿çšã§ããããã«ãªããŸãããXamarin.Androidãããžã§ã¯ããäœæããããã»ã¹ã«ã€ããŠã¯èª¬æããŸããããèŠç¹ãç°¡åã«èª¬æããŸãã
ãŸããçµæã®ãã¡ã€ã«ããããžã§ã¯ãã®ãããŒã¢ãã«ãã©ã«ããŒã«é 眮ããæ¬¡ã«ãã®ãã¡ã€ã«ã®æäœã®ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ãšããŠãç»é¢äžã«3ã€ã®ImageViewãäœæããŸããã
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android ="http://schemas.android.com/apk/res/android"
xmlns:app ="http://schemas.android.com/apk/res-auto"
android:layout_width ="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px">
<ImageView
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_alignParentLeft="true"
android:id="@+id/imageView1"
android:adjustViewBounds="true"
app:srcCompat="@drawable/question_svg"
android:background="@android:color/holo_red_dark"/>
<ImageView
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_alignParentRight="true"
android:id="@+id/imageView2"
android:adjustViewBounds="true"
app:src="@drawable/question"
android:background="@android:color/holo_red_dark"/>
<ImageView
android:layout_width="150dp"
android:layout_height="150dp"
android:id="@+id/imageView3"
android:adjustViewBounds="true"
android:layout_marginTop="30dp"
app:srcCompat="@drawable/question"
android:layout_below="@id/imageView1"/>
</RelativeLayout>
æåã®ImageViewã§ã¯ãå ã®SVGãã¡ã€ã«ãandroidïŒsrcããããã£ã«ã2çªç®ã¯å€æãããXMLãã¡ã€ã«ãåãããããã£ã«ã3çªç®ã¯appïŒsrcCompatããããã£ã«å²ãåœãŠãããšããŸããïŒãã®ååä»ãã¯ã³ãŒãã«ç€ºãããŠããããã«æå®ããå¿ èŠãããããšã«æ³šæããŠãã ããïŒ ïŒã
çµæã¯ãã¢ããªã±ãŒã·ã§ã³ãèµ·åãããåã«ããã¶ã€ããŒã§ãã§ã«ç®ç«ã¡ãŸããããã¡ã€ã«ãæ£ãã衚瀺ããå¯äžã®ç¢ºå®ãªæ¹æ³ã¯ã3çªç®ã®ImageViewã«ãããŸãã

次ã«ãç»åãããŸããŸãªããã€ã¹ã§æ£ãã衚瀺ãããããšã確èªããå¿ èŠããããŸããæ¯èŒã®ããã«ãHuawei Honor 20ProãšNexus5ãéžæããŸããããŸãã誀ã£ãè¡šç€ºæ¹æ³ã®ä»£ããã«ãç®çã®æ¹æ³ãæå®ããImageViewã®ãµã€ãºã150x150 dpã200x200 dpã300x300dpã«å€æŽããŸããã
Huawei Honor 20 Pro

ãã¯ãµã¹5

ã芧ã®ãšãããç»åã®å質ã¯åãã§ããã€ãŸããç®çã®çµæãåŸãããŠããŸãã
çµæã®ãã¡ã€ã«ã¯ãéåžžãšåãæ¹æ³ã§ã³ãŒããã䜿çšãããŸã
image.SetImageResource(Resource.Drawable.< >);
Xamarin.iOSã§ã®SVG圢åŒã®æäœ
Xamarin.iOSã®å ŽåãSVGãã¡ã€ã«ã®æäœããã®ãŸãŸã§ã¯ãµããŒããããŠããªããšããæå³ã§ãç¶æ³ã¯Xamarin.Androidã®å Žåãšåãã§ãããã ãããã®å®è£ ã«ã¯å€ãã®åŽåã¯å¿ èŠãããŸããããã€ãã£ãiOSéçºã®å ŽåãSVGã«ã¯SVGKitãå«ãŸããŠããå¿ èŠããããŸããããã«ããããµãŒãããŒãã£ã®ãœãªã¥ãŒã·ã§ã³ã«é Œãããšãªãããã®ãããªãã¡ã€ã«ãåŠçã§ããŸããXamarin.iOSã®å ŽåãSVGKit.Bindingã©ã€ãã©ãªã䜿çšã§ããŸããããã¯ãå ã®SVGKitã®CïŒã©ãããŒã§ãã
å¿
èŠãªã®ã¯ãNuGetããã±ãŒãžããããžã§ã¯ãã«æ¥ç¶ããããšã ãã§ãããã®èšäºã®å·çæç¹ã§ã¯ãææ°ããŒãžã§ã³ã¯1.0.4ã§ãã

æ®å¿µãªããããã®ã©ã€ãã©ãªã¯ãµããŒããããªããªã£ãããã§ããããããžã§ã¯ãã§ã®äœ¿çšã«ã¯éåžžã«é©ããŠããŸãã
ããã§ã¯ãSVGKImageã¯ã©ã¹ïŒSVGã€ã¡ãŒãžèªäœïŒãšSVGKFastImageViewïŒãã®ãããªã€ã¡ãŒãžã衚瀺ããããã®ã³ã³ãããŒã«ïŒãå®è£
ãããŠããŸãã
void CreateControls()
{
var image_bundle_resource = new SVGKImage("SVGImages/question.svg");
img1 = new SVGKFastImageView(image_bundle_resource);
Add(img1);
img1.Frame = new CGRect(View.Frame.Width / 4, 50, View.Frame.Width / 2, View.Frame.Width / 2);
var image_content = new SVGKImage(Path.Combine(NSBundle.MainBundle.BundlePath, "SVGImages/question1.svg"));
img2 = new SVGKFastImageView(image_content);
Add(img2);
img2.Frame = new CGRect(5, img1.Frame.Bottom + 5, View.Frame.Width - 5, View.Frame.Width - 5);
}
æ®å¿µãªãããã©ã€ãã©ãªã«ã¯ããã€ãã®æ¬ ç¹ããããŸãã
- SVGKFastImageViewã¯ãSVGKImageãæäŸããªãå Žåã®åæåããµããŒãããŸãã-ã³ãŒãã§æäŸãããã³ã³ã¹ãã©ã¯ã¿ãŒã䜿çšããå¿ èŠãããããšã瀺ããšã©ãŒãã¹ããŒãããŸãã
- ä»ã®ã³ã³ãããŒã«ã§SVGãã¡ã€ã«ã䜿çšããæ¹æ³ã¯ãããŸããããã ãããããäžèŠãªå Žåã¯äœ¿çšã§ããŸãã

ImageViewã ãã§ãªãSVGãã¡ã€ã«ã䜿çšããããã«ã¢ããªã±ãŒã·ã§ã³ãéèŠãªå Žåã¯ãä»ã®ã©ã€ãã©ãªã䜿çšã§ããŸããããšãã°ãFFImageLoadingãããã¯ããã€ãã£ãXamarin.iOS UIImageã§SVGã€ã¡ãŒãžãã¢ã³ããŒãã§ããã ãã§ãªããç®çã®ã³ã³ãããŒã«ã«çŽæ¥ã¢ã³ããŒãããŠéçºæéãç¯çŽã§ãã匷åãªã©ã€ãã©ãªã§ããã€ã³ã¿ãŒãããããç»åãããŠã³ããŒãããæ©èœããããŸããããã®èšäºã§ã¯èæ ®ããŸããã
ã©ã€ãã©ãªã䜿çšããã«ã¯ã2ã€ã®NuGetããã±ãŒãžïŒXamarin.FFImageLoadingãšXamarin.FFImageLoading.SVGïŒããããžã§ã¯ãã«æ¥ç¶ããå¿ èŠããããŸãã

ãã¹ãã¢ããªã±ãŒã·ã§ã³ã§ã¯ãSVGã€ã¡ãŒãžãUIImageViewã«çŽæ¥ããŒãããã€ã¡ãŒãžããã€ãã£ãUIImageã«ã¢ã³ããŒãããã¡ãœããã䜿çšããŸããã
private async Task CreateControls()
{
img1 = new UIImageView();
Add(img1);
img1.Frame = new CGRect(View.Frame.Width / 4, 50, View.Frame.Width/2, View.Frame.Width/2);
ImageService.Instance
.LoadFile("SVGImages/question.svg")
.WithCustomDataResolver(new SvgDataResolver((int)img1.Frame.Width, 0, true))
.Into(img1);
var button = new UIButton() { BackgroundColor = UIColor.Red};
Add(button);
button.Frame = new CGRect(View.Frame.Width/2 - 25, img1.Frame.Bottom + 20, 50, 50);
UIImage imageSVG = await ImageService.Instance
.LoadFile("SVGImages/question.svg")
.WithCustomDataResolver(new SvgDataResolver((int)View.Frame.Width, 0, true))
.AsUIImageAsync();
if(imageSVG != null)
button.SetBackgroundImage(imageSVG, UIControlState.Normal);
}
ãã®ã©ã€ãã©ãªã«ã¯ãUIImageã®SVGæåå衚çŸããªãŒããŒã©ã€ãããã¡ãœããããããŸãããããã¯å°ããªãã¡ã€ã«ã«å¯ŸããŠã®ã¿æå³ããããŸãã
var svgString = @"<svg><rect width=""30"" height=""30"" style=""fill:blue"" /></svg>";
UIImage img = await ImageService.Instance
.LoadString(svgString)
.WithCustomDataResolver(new SvgDataResolver(64, 0, true))
.AsUIImageAsync();
ã©ã€ãã©ãªã«ã¯å€ãã®æ©èœããããŸãããããã§ã¯ãããã«ã€ããŠã¯èæ ®ããŸãããæ¬åœã«èšåãã䟡å€ãããå¯äžã®ããšã¯ããã®ã©ã€ãã©ãªãXamarin.Androidãããžã§ã¯ãã§ã䜿çšã§ãããšããããšã§ããXamarin.Formsãããžã§ã¯ãã§äœ¿çšããããã«ããã®ã©ã€ãã©ãªã®é¡äŒŒç©ããããŸããããã«ã€ããŠã¯ä»¥äžã§èª¬æããŸãã
Xamarin.Formsã§ã®SVG圢åŒã®æäœ
æŠããŠããã©ãŒã ã®ã©ã€ãã©ãªãæ¢ãå¿ èŠã¯ãããŸããããããžã§ã¯ãã«èªèãããŠãããã©ââãããã©ãŒã ãæ¥ç¶ããã ãã§ã䜿çšããåã³ã³ãããŒã«ã®ã¬ã³ããªã³ã°ãæžãçŽãã®ã«é·ãæéãšæéãããããŸãã幞ããªããšã«ãç§ãã¡ãå ±æãã解決çããããŸãã
Xamarin.FFImageLoading Xamarin.FFImageLoading.SVG, Xamarin.Forms (Xamarin.FFImageLoading.Forms Xamarin.FFImageLoading.SVG.Forms). Xamarin.Forms , , :
- (PCL ) NuGet- â Xamarin.FFImageLoading.Forms Xamarin.FFImageLoading.SVG.Forms;
- AppDelegate.cs iOS-:
public override bool FinishedLaunching( UIApplication app, NSDictionary options ) { global::Xamarin.Forms.Forms.Init(); FFImageLoading.Forms.Platform.CachedImageRenderer.Init(); CachedImageRenderer.InitImageSourceHandler(); var ignore = typeof(SvgCachedImage); LoadApplication(new App()); return base.FinishedLaunching(app, options); } - MainActivity.cs Android-:
protected override void OnCreate( Bundle savedInstanceState ) { TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); global::Xamarin.Forms.Forms.Init(this, savedInstanceState); FFImageLoading.Forms.Platform.CachedImageRenderer.Init(true); CachedImageRenderer.InitImageViewHandler(); var ignore = typeof(SvgCachedImage); LoadApplication(new App()); }
ã©ã€ãã©ãªã¯ããã©ãããã©ãŒã ãããžã§ã¯ããšEmbeddedResoucePCLãããžã§ã¯ãã®äž¡æ¹ã«ããSVGãªãœãŒã¹ãžã®åŒã³åºããå®è£ ããŸããSvgCachedImageã¯ãSVGç»åã衚瀺ããããã«äœ¿çšãããŸããXamarin.Formsã§äœ¿çšãããImageSourceãåãå ¥ããå ã®Imageã³ã³ãããŒã«ãšã¯ç°ãªããSvgCachedImageã¯SvgImageSourceã§æ©èœããŸãã
xmlns:svg="clr-namespace:FFImageLoading.Svg.Forms;assembly=FFImageLoading.Svg.Forms"
ããªãã¯ããã€ãã®æ¹æ³ã§ãããæäŸããããšãã§ããŸãïŒ
- XAMLãã¡ã€ã«ã§ããã©ãããã©ãŒã ãããžã§ã¯ããªãœãŒã¹ã«ããSVGãã¡ã€ã«ã®ååãæå®ããŸãã
<svg:SvgCachedImage Source="question.svg" WidthRequest="100" HeightRequest="100"/> - XAMLãã¡ã€ã«ã§ãPCLãããžã§ã¯ãã®åã蟌ã¿ãªãœãŒã¹ã§ããSVGãã¡ã€ã«ãžã®ãã«ãã¹ãæå®ããŸãã
<svg:SvgCachedImage Source="resource://SVGFormsTest.SVG.question1.svg" WidthRequest="100" HeightRequest="100"/>
åã蟌ã¿ãªãœãŒã¹ããããŒãããå Žåãå¥ã®ã¢ã»ã³ããªã®ååãæå®ã§ããŸãã
resource://SVGFormsTest.SVG.question1.svg?assembly=[ASSEMBLY FULL NAME] - ã³ãŒãããäœæ¥ãããšãã¯ãæåã«ã³ã³ãããŒã«ã«ååãä»ããŸãã
<svg:SvgCachedImage x:Name="image" WidthRequest="100" HeightRequest="100"/>
次ã«ã䜿çšãããŠãããªãœãŒã¹ã«å¿ããŠã次ã®ããããã®ãªãã·ã§ã³ãéžæããŸãã
- åã蟌ã¿ãªãœãŒã¹ã䜿çšããã«ã¯
image.Source = SvgImageSource.FromResource("SVGFormsTest.SVG.question1.svg");
-
image.Source = SvgImageSource.FromFile("question.svg");
- åã蟌ã¿ãªãœãŒã¹ã䜿çšããã«ã¯
- Binding 2 :
- , SvgImageSource. , XAML- :
<svg:SvgCachedImage Source="{Binding Source}" WidthRequest="100" HeightRequest="100"/> - . , . :
<ContentPage.Resources> <ResourceDictionary> <svg:SvgImageSourceConverter x:Key="SourceConverter"/> </ResourceDictionary> </ContentPage.Resources>
:
<svg:SvgCachedImage Source="{Binding Source1, Converter={StaticResource SourceConverter}}" WidthRequest="100" HeightRequest="100"/>
:
public MainVM() { source1 = "question.svg"; } string source1; public string Source1 { get => source1; set { source1 = value; } }
:
public MainVM() { source1 = "resource://SVGFormsTest.SVG.question1.svg"; } string source1; public string Source1 { get => source1; set { source1 = value; } }
, . , , .
- , SvgImageSource. , XAML- :
SVG- , . , , , , , , SVG- . , PNG- , SVG, .
SVGãªãœãŒã¹ã«ãå°ããªæ¬ ç¹ããããŸããGoogleãšAppleã®ã¬ã€ãã©ã€ã³ã«åŸã£ãŠã¢ã€ã³ã³ãšããŠäœ¿çšã§ããã®ã¯ãPNGãã¡ã€ã«ãšJPEGãã¡ã€ã«ã®ã¿ã§ãããããã¢ããªã±ãŒã·ã§ã³ã¢ã€ã³ã³ãšããŠæäŸããããšã¯ã§ããŸããã