내 질문은 매우 간단합니다. a Avalonia.Media.Geometry
에을 그려 Avalonia.Media.Bitmap
결과 이미지를 Steam에 저장할 수있을뿐만 아니라 ImageBrush
?
에서 System.Drawing
네임 스페이스 하나는 단순히 부를 수 Graphics.FromImage(mySystemDrawingBitmap);
얻을 Graphics
다음 원하는 기하학 무엇이든 그릴 수 있습니다 개체를.
Avalonia에서 이와 유사한 쉬운 접근 방식이 있습니까? 호출 RenderTargetBitmap
된 메서드가 있기 때문에 유망 해 보이는 문서 에서 호출 된 것을 파헤 CreateDrawingContext
쳤지 만 IVisualBrushRenderer
작동하려면 매개 변수로 인스턴스가 필요합니다 . ImmediateRenderer
말한 인터페이스를 구현 하는 것으로 보이는 것이 있지만 Avalonia.VisualTree.IVisual
생성자에서 매개 변수로 자체 가 필요 하며이 단계 RenderTargetBitmap
에서 무작위로 필요한 객체의 엄청난 오버 헤드가있는 것처럼 보이므로 내 문제에 대한 유용성이 의심됩니다. 실제로 원하지 않거나 필요하지 않은 IVisual
인스턴스를 비트 맵에 그리기 위해 더미 인스턴스 를 만들지는 않을 것 입니다. 끔찍한 코드 냄새가납니다.
Sooo : Avalonia.Media.Geometry
( Geometry.Parse()
예를 들어로 만든) 렌더링을 Avalonia.Media.Bitmap
. 당신은 어떻게되어 실제로 그것을 어떻게해야?
void RenderToFile(Geometry geometry, Brush brush, string path)
{
var control = new DrawingPresenter()
{
Drawing = new GeometryDrawing
{
Geometry = geometry, Brush = brush,
},
Width = geometry.Bounds.Right,
Height = geometry.Bounds.Bottom
};
RenderToFile(control, path);
}
void RenderToFile(Control target, string path)
{
var pixelSize = new PixelSize((int) target.Width, (int) target.Height);
var size = new Size(target.Width, target.Height);
using (RenderTargetBitmap bitmap = new RenderTargetBitmap(pixelSize, new Vector(96, 96)))
{
target.Measure(size);
target.Arrange(new Rect(size));
bitmap.Render(target);
bitmap.Save(path);
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다