728x90
반응형
728x170
▶ GraphicsDrawable.cs
using System.Numerics;
namespace TestProject;
/// <summary>
/// 그래픽스 그리기 가능형
/// </summary>
public class GraphicsDrawable : IDrawable
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 그리기 - Draw(canvas, dirtyRectangle)
/// <summary>
/// 그리기
/// </summary>
/// <param name="canvas">캔버스</param>
/// <param name="dirtyRectangle">더티 사각형</param>
public void Draw(ICanvas canvas, RectF dirtyRectangle)
{
PathF path = new PathF();
for(int i = 0; i < 11; i++)
{
double angle = 5 * i * 2 * Math.PI / 11;
PointF point = new PointF(100 * (float)Math.Sin(angle), -100 * (float)Math.Cos(angle));
if(i == 0)
{
path.MoveTo(point);
}
else
{
path.LineTo(point);
}
}
Matrix3x2 matrix = new Matrix3x2
(
1, // M11, ScaleX
1, // M12, ShearY
0, // M21, ShearX
1, // M22, SacleY
150, // M31, TranslateX
150 // M32, TranslateY
);
canvas.ConcatenateTransform(matrix);
canvas.FillColor = Colors.Yellow;
canvas.FillRectangle(dirtyRectangle);
canvas.Translate(175, 175);
canvas.FillColor = Colors.Red;
canvas.FillPath(path);
}
#endregion
}
728x90
▶ MainPage.xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage x:Class="TestProject.MainPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:TestProject">
<ContentPage.Resources>
<local:GraphicsDrawable x:Key="GraphicsDrawableKey" />
</ContentPage.Resources>
<GraphicsView
HorizontalOptions="Center"
VerticalOptions="Center"
WidthRequest="350"
HeightRequest="350"
Drawable="{StaticResource GraphicsDrawableKey}" />
</ContentPage>
728x90
반응형
그리드형(광고전용)
'C# > MAUI' 카테고리의 다른 글
[C#/MAUI] Style 엘리먼트 : ApplyToDerivedTypes 속성을 사용해 파생 클래스에 스타일 설정하기 (0) | 2022.06.04 |
---|---|
[C#/MAUI] Shadow 엘리먼트 : 클리핑 이미지 그림자 설정하기 (프리뷰 버전 오류) (0) | 2022.06.03 |
[C#/MAUI] Shadow 엘리먼트 : 이미지 그림자 설정하기 (0) | 2022.06.03 |
[C#/MAUI] ICanvas 인터페이스 : FillPath 메소드를 사용해 EvenOdd 와인딩 모드 설정하기 (0) | 2022.06.03 |
[C#/MAUI] ICanvas 인터페이스 : FillPath 메소드를 사용해 NonZero 와인딩 모드 설정하기 (0) | 2022.06.03 |
[C#/MAUI] ICanvas 인터페이스 : ConcatenateTransform 메소드를 사용해 변환하기 (0) | 2022.06.03 |
[C#/MAUI] ICanvas 인터페이스 : Translate/Scale/Rotate 메소드를 사용해 시계 만들기 (0) | 2022.06.03 |
[C#/MAUI] ICanvas 인터페이스 : Rotate 메소드를 사용해 특정 위치를 기준으로 회전 변환하기 (0) | 2022.06.03 |
[C#/MAUI] ICanvas 인터페이스 : Rotate 메소드를 사용해 회전 변환하기 (0) | 2022.06.03 |
[C#/MAUI] ICanvas 인터페이스 : Scale 메소드를 사용해 스케일 변환하기 (0) | 2022.06.03 |
[C#/MAUI] ICanvas 인터페이스 : Translate 메소드를 사용해 이동 변환하기 (0) | 2022.06.03 |
댓글을 달아 주세요