Maui: [์‚ฌ์–‘] ๊ทธ๋ฆผ์ž

์— ๋งŒ๋“  2020๋…„ 05์›” 18์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dotnet/maui

๊ทธ๋ฆผ์ž

๊ทธ๋ฆผ์ž๋Š” ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์‹œ๊ฐ์  ์‹ ํ˜ธ๋ฅผ ๋งŒ๋“ค์–ด ์ธ๊ฐ„์˜ ๋‘๋‡Œ๊ฐ€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” UI ์š”์†Œ๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ๋ชจ๋ฐ”์ผ ๋””์ž์ด๋„ˆ๊ฐ€ ๋””์ž์ธ์— ๊ทธ๋ฆผ์ž๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

shadows

API

DropShadow ํด๋ž˜์Šค๋Š” Layout ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ๊ทธ๋ฆผ์ž๋ฅผ ๋งŒ๋“œ๋Š” ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ

  • Radius : ๊ทธ๋ฆผ์ž๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ€์šฐ์‹œ์•ˆ ๋ธ”๋Ÿฌ์˜ ๋ฐ˜๊ฒฝ์ž…๋‹ˆ๋‹ค.
  • ์ƒ‰์ƒ : ๊ทธ๋ฆผ์ž์˜ ์ƒ‰์ƒ์ž…๋‹ˆ๋‹ค.
  • ์˜คํ”„์…‹ : ๋ ˆ์ด์•„์›ƒ์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ ๊ทธ๋ฆผ์ž์˜ ์˜คํ”„์…‹์ž…๋‹ˆ๋‹ค.
  • Opacity : ๊ทธ๋ฆผ์ž์˜ ๋ถˆํˆฌ๋ช…๋„.
public class DropShadow : BindableObject
{
    public static readonly BindableProperty RadiusProperty = BindableProperty.Create(
        nameof(Radius), typeof(double), typeof(DropShadow), 10.0d);

    public double Radius
    {
        get => (double)GetValue(RadiusProperty);
        set => SetValue(RadiusProperty, value);
    }

    public static readonly BindableProperty ColorProperty = BindableProperty.Create(
        nameof(Color), typeof(Color), typeof(DropShadow), Color.Black);

    public Color Color
    {
        get => (Color)GetValue(ColorProperty);
        set => SetValue(ColorProperty, value);
    }    

    public static readonly BindableProperty OffsetProperty = BindableProperty.Create(
        nameof(Offset), typeof(Point), typeof(DropShadow), new Point(1, 1));

    public Point Offset
    {
        get => (Point)GetValue(OffsetProperty);
        set => SetValue(OffsetProperty, value);
    }

    public static readonly BindableProperty OpacityProperty = BindableProperty.Create(
        nameof(Opacity), typeof(double), typeof(DropShadow), 1.0d);

    public double Opacity
    {
        get => (double)GetValue(OpacityProperty);
        set => SetValue(OpacityProperty, value);
    }
}

์‹œ๋‚˜๋ฆฌ์˜ค

C #, XAML ๋ฐ CSS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

C# ์˜ˆ์ œ

var layout = new Grid();

var shadow = new DropShadow ();
shadow.Radius = 12;
shadow.Color = Color.Red;
shadow.Offset = new Point (12, 18);
shadow.Opacity = 0.75d;

layout.Shadow = shadow;

XAML ์˜ˆ์ œ

<Grid>
     <Grid.Shadow>
          <DropShadow
               Radius="12"
               Color="Red"
               Offset="12, 18"
               Opacity="0.75" />
     </Grid.Shadow>
</Grid>

CSS ์˜ˆ

box-shadow: 12px 18px 12px 12px red;

ํ•˜์œ„ ํ˜ธํ™˜์„ฑ

์ผ๋ถ€ Xamarin.Forms ๋ ˆ์ด์•„์›ƒ์—๋Š” ์ด๋ฏธ ๊ทธ๋ฆผ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Frame์˜ HasShadow ์†์„ฑ์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (Shadow ์†์„ฑ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ).

๋ฒ”์œ„

์ด ์‚ฌ์–‘์—์„œ๋Š” ๋‹ค๋ฅธ Xamarin.Forms ๋ ˆ์ด์•„์›ƒ์— ๊ทธ๋ฆผ์ž๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ์ด๋ธ”๊ณผ ๊ฐ™์€ ํŠน์ • ์ปจํŠธ๋กค์€ ๋ฒ”์œ„์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋‚˜์ค‘์— ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Œ).

๋‚œ์ด๋„ : ์ค‘

enhancement proposal-open

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์—„์ฒญ๋‚œ! ์ด ๊ธฐ๋Šฅ์€ ์ •๋ง ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ผ๋””์–ธํŠธ ๊ทธ๋ฆผ์ž ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด๋ฅผ ์กฐ๊ธˆ ๋” ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

image

@jsuarezruiz ๊ฐ€ ์—ฌ๊ธฐ์— ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด https://github.com/dotnet/maui/issues/11

๋‚ด ๊ถŒ์žฅ ์‚ฌํ•ญ์€ ๊ทธ๋ผ๋””์–ธํŠธ ๋ฐ ๋‹จ์ƒ‰์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด "๋ธŒ๋Ÿฌ์‹œ"๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก "์ƒ‰์ƒ" ์†์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฒฌ๋ณธ

<Grid>
     <Grid.Shadow>
          <DropShadow
               Radius="12"
               Offset="12, 18"
               Opacity="0.75">
               <DropShadow.Color>
                 <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                <GradientStop Color="Yellow" Offset="0.0" />
                <GradientStop Color="Red" Offset="0.25" />
                <GradientStop Color="Blue" Offset="0.75" />
                <GradientStop Color="LimeGreen" Offset="1.0" />
             </LinearGradientBrush>
               </DropShadow.Color>
          </DropShadow>
     </Grid.Shadow>
</Grid>

์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋‚˜์š”?

๋ชจ๋“  3 ๋Œ“๊ธ€

์ข‹์•„ ๋ณด์ธ๋‹ค!

์—„์ฒญ๋‚œ! ์ด ๊ธฐ๋Šฅ์€ ์ •๋ง ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ผ๋””์–ธํŠธ ๊ทธ๋ฆผ์ž ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด๋ฅผ ์กฐ๊ธˆ ๋” ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

image

@jsuarezruiz ๊ฐ€ ์—ฌ๊ธฐ์— ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด https://github.com/dotnet/maui/issues/11

๋‚ด ๊ถŒ์žฅ ์‚ฌํ•ญ์€ ๊ทธ๋ผ๋””์–ธํŠธ ๋ฐ ๋‹จ์ƒ‰์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด "๋ธŒ๋Ÿฌ์‹œ"๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก "์ƒ‰์ƒ" ์†์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฒฌ๋ณธ

<Grid>
     <Grid.Shadow>
          <DropShadow
               Radius="12"
               Offset="12, 18"
               Opacity="0.75">
               <DropShadow.Color>
                 <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                <GradientStop Color="Yellow" Offset="0.0" />
                <GradientStop Color="Red" Offset="0.25" />
                <GradientStop Color="Blue" Offset="0.75" />
                <GradientStop Color="LimeGreen" Offset="1.0" />
             </LinearGradientBrush>
               </DropShadow.Color>
          </DropShadow>
     </Grid.Shadow>
</Grid>

์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋‚˜์š”?

๋‰ด๋กœ๋ชจํ”ฝ ๋””์ž์ธ์„ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ทธ๋ฆผ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ์ƒˆ๋กœ์šด ํŒจ์…˜ ์•„์ดํ…œ์ž…๋‹ˆ๋‹ค ...

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

Amine-Smahi picture Amine-Smahi  ยท  3์ฝ”๋ฉ˜ํŠธ

jsuarezruiz picture jsuarezruiz  ยท  12์ฝ”๋ฉ˜ํŠธ

UriHerrera picture UriHerrera  ยท  3์ฝ”๋ฉ˜ํŠธ

Yaroslav08 picture Yaroslav08  ยท  6์ฝ”๋ฉ˜ํŠธ

njsokalski picture njsokalski  ยท  6์ฝ”๋ฉ˜ํŠธ