๊ทธ๋ฆผ์๋ ์ธํฐํ์ด์ค์์ ์๊ฐ์ ์ ํธ๋ฅผ ๋ง๋ค์ด ์ธ๊ฐ์ ๋๋๊ฐ ์ฌ์ฉ์๊ฐ ๋ณด๋ UI ์์๋ฅผ ๊ตฌ๋ณํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ์ค์ ๋ก ๋ชจ๋ฐ์ผ ๋์์ด๋๊ฐ ๋์์ธ์ ๊ทธ๋ฆผ์๋ฅผ ํฌํจํ๋ ๊ฒ์ ์ ํธํ๋ ์ด์ ์ ๋๋ค.
DropShadow ํด๋์ค๋ Layout ์ ์ ์ฉํ ์ ์๋ ๊ตฌ์ฑ ๊ฐ๋ฅํ ๊ทธ๋ฆผ์๋ฅผ ๋ง๋๋ ์๋จ์ ์ ๊ณตํฉ๋๋ค.
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๋ฅผ ์ฌ์ฉํ๋ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
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;
<Grid>
<Grid.Shadow>
<DropShadow
Radius="12"
Color="Red"
Offset="12, 18"
Opacity="0.75" />
</Grid.Shadow>
</Grid>
box-shadow: 12px 18px 12px 12px red;
์ผ๋ถ Xamarin.Forms ๋ ์ด์์์๋ ์ด๋ฏธ ๊ทธ๋ฆผ์๊ฐ ์์ต๋๋ค. Frame์ HasShadow ์์ฑ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค (Shadow ์์ฑ ์ฌ์ฉ์ ๊ถ์ฅํ์ง๋ง ์ฌ์ ํ ์ฌ์ฉํ ์ ์์).
์ด ์ฌ์์์๋ ๋ค๋ฅธ Xamarin.Forms ๋ ์ด์์์ ๊ทธ๋ฆผ์๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๋ ์ด๋ธ๊ณผ ๊ฐ์ ํน์ ์ปจํธ๋กค์ ๋ฒ์์ ํฌํจ๋์ง ์์ต๋๋ค(๋์ค์ ๋์ฌ ์ ์์).
์ข์ ๋ณด์ธ๋ค!
์์ฒญ๋! ์ด ๊ธฐ๋ฅ์ ์ ๋ง ๋ณด๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ผ๋์ธํธ ๊ทธ๋ฆผ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ฌ ์ด๋ฅผ ์กฐ๊ธ ๋ ๊ฐ์ ํ ์ ์๋ ๊ธฐํ๋ฅผ ์ป์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@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>
์ด๋ป๊ฒ ์๊ฐํ๋์?
๋ด๋ก๋ชจํฝ ๋์์ธ์ ์ํด ์ฌ๋ฌ ๊ฐ์ ๊ทธ๋ฆผ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด๊ฒ์ ์๋ก์ด ํจ์
์์ดํ
์
๋๋ค ...
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์์ฒญ๋! ์ด ๊ธฐ๋ฅ์ ์ ๋ง ๋ณด๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ผ๋์ธํธ ๊ทธ๋ฆผ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ฌ ์ด๋ฅผ ์กฐ๊ธ ๋ ๊ฐ์ ํ ์ ์๋ ๊ธฐํ๋ฅผ ์ป์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@jsuarezruiz ๊ฐ ์ฌ๊ธฐ์ ์ธ๊ธํ๋ฏ์ด https://github.com/dotnet/maui/issues/11
๋ด ๊ถ์ฅ ์ฌํญ์ ๊ทธ๋ผ๋์ธํธ ๋ฐ ๋จ์์ ๋ํด ์๋ก์ด "๋ธ๋ฌ์"๋ฅผ ์ฌ์ฉํ๋๋ก "์์" ์์ฑ์ ํฅ์์ํค๋ ๊ฒ์ ๋๋ค.
๊ฒฌ๋ณธ
์ด๋ป๊ฒ ์๊ฐํ๋์?