From c2e0274a98ff35d554951805c41e9f777928afff Mon Sep 17 00:00:00 2001 From: Igor Demin Date: Sun, 21 Feb 2021 11:50:26 +0300 Subject: [PATCH] Tutorials. Loading SVG (#407) --- artwork/idea-logo.svg | 47 ++++++++++++++++++ .../Image_And_Icons_Manipulations/README.md | 24 +++++++++ .../loading_svg_images.png | Bin 0 -> 26625 bytes 3 files changed, 71 insertions(+) create mode 100644 artwork/idea-logo.svg create mode 100644 tutorials/Image_And_Icons_Manipulations/loading_svg_images.png diff --git a/artwork/idea-logo.svg b/artwork/idea-logo.svg new file mode 100644 index 00000000..07b19691 --- /dev/null +++ b/artwork/idea-logo.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tutorials/Image_And_Icons_Manipulations/README.md b/tutorials/Image_And_Icons_Manipulations/README.md index e47704ba..cbfe8c91 100755 --- a/tutorials/Image_And_Icons_Manipulations/README.md +++ b/tutorials/Image_And_Icons_Manipulations/README.md @@ -337,6 +337,30 @@ fun asImageAsset(image: BufferedImage): ImageBitmap { ![Tray icon](tray_icon.png) +## Loading SVG images +Suppose we have an SVG image placed in the `resources/images` directory in our project. + +[SVG](../../artwork/idea-logo.svg) + +```kotlin +import androidx.compose.desktop.Window +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.svgResource + +fun main() { + Window { + Image( + painter = svgResource("images/idea-logo.svg"), + contentDescription = "Idea logo", + modifier = Modifier.fillMaxSize() + ) + } +} +``` +![Loading XML vector images](loading_svg_images.png) + ## Loading XML vector images Compose for Desktop supports XML vector images. XML vector images come from the world of [Android](https://developer.android.com/guide/topics/graphics/vector-drawable-resources). diff --git a/tutorials/Image_And_Icons_Manipulations/loading_svg_images.png b/tutorials/Image_And_Icons_Manipulations/loading_svg_images.png new file mode 100644 index 0000000000000000000000000000000000000000..b27c48b67083240284007ddb6bf8a15b8e439437 GIT binary patch literal 26625 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