Можете ли вы использовать RawRectangleF, который простирается до отрицательных областей цели рендеринга при рисовании раC#

Место общения программистов C#
Ответить
Anonymous
 Можете ли вы использовать RawRectangleF, который простирается до отрицательных областей цели рендеринга при рисовании ра

Сообщение Anonymous »

Недавно я возился с Direct 2D в WPF и пытался создать способ просмотра файлов DXF с помощью Direct2D через Sharp DX. Я обнаружил, что панорамирование объекта рендеринга в больших файлах DXF происходит довольно медленно, поэтому я попытался выполнить панорамирование с помощью растрового изображения. Пока что это работает достаточно хорошо, пока файл DXF остается на положительной территории. Я использую этот метод для загрузки/перезагрузки растрового изображения при запуске программы или при изменении размера окна:

Код: Выделить всё

        private void LoadBitmap(RenderTarget target)
{
if (LayerManager is null)
{
return;
}
if (bitmapRenderTarget is not null)
{
bitmapRenderTarget.Dispose();
bitmapRenderTarget = null;
}
bitmapRenderTarget = new BitmapRenderTarget(target, CompatibleRenderTargetOptions.None, new Size2F((float)Extents.Right, (float)Extents.Bottom));
bitmapRenderTarget.BeginDraw();
bitmapRenderTarget.Clear(new RawColor4(1.0f, 1.0f, 0f, 1.0f));

foreach (var layer in LayerManager.Layers.Values)
{
if (layer.IsVisible)
{
foreach (var o in layer.DrawingObjects)
{
if (o is DrawingLine drawingLine)
{
drawingLine.UpdateBrush(drawingLine.DxfLine, bitmapRenderTarget);
DxfHelpers.DrawLine(drawingLine, bitmapRenderTarget.Factory, bitmapRenderTarget, currentThickness);
}
}
}
}
bitmapRenderTarget.EndDraw();
bitmapRenderTargetNeedsUpdate = false;
bitmapLoaded = true;
}
Затем я визуализирую растровое изображение в основной объект рендеринга, используя метод ниже:

Код: Выделить всё

private void RenderBitmap(RenderTarget target)
{
if (bitmapRenderTarget is not null)
{
if (bitmapRenderTargetNeedsUpdate)
{
LoadBitmap(target);
}
RawRectangleF rect = new(-200, -200, 500, 1000);
target.DrawBitmap(bitmapRenderTarget.Bitmap, 1.0f, BitmapInterpolationMode.Linear, rect);
}
}
Моя проблема заключается в том, что когда загружается файл DXF, который выходит за пределы осей в пространство с отрицательными координатами, растровое изображение обрезается в этих точках. Мой метод RenderBitmap включает поле RawRectangleF, чтобы показать это. Несмотря на значения -200 слева и сверху, растровое изображение обрезано по осям X и Y. Есть ли способ обойти это, или мне просто нужно будет перевести все объекты в отрицательных файлах dxf на положительную территорию? Есть ли более эффективный способ сделать это?
У меня есть ссылка на мое решение с предварительно загруженным файлом DXF, который показывает проблему.

Подробнее здесь: https://stackoverflow.com/questions/786 ... e-render-t
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»