В своем приложении я загружаю изображение и автоматически добавляется в сетку. Затем я могу дважды щелкнуть, чтобы выбрать, какие части изображения нарезают. Я установил, где его сохранить.
На этом скриншоте я выбираю нарезать две верхние ячейки сетки:
necksckg4u.jpg ". Сохранение:
в краске, если я редактирую нарезанные изображения, я не вижу ни одного артифакта, не видя, не видно, что не видно, что не видно, не видно, что не видно, что не видно, не видно, что не видно, не видно, не видно, что не видно, не видно, что не видно, не видно, что не видно, не видно, что нет. Артефакты линии кровоточащих линий ". src = "https://i.sstatic.net/qsmpaydn.jpg"/>
Затем я перетаскиваю изображение в редактор Unity и изменяет настройки в инспекторе. alt = "Линии слева и над Pacman" src = "https://i.sstatic.net/jtfpsmhf.jpg"/>
Как я могу его исправить, чтобы линии там не было? Если я изменяю изображение с режима Sprite Single на несколько, то я вообще не вижу Pacman.
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace ImageSlicerApp
{
public class ImageGridViewer : Control
{
public Bitmap? SourceImage
{
get => sourceImage;
set
{
sourceImage = value;
UpdateCachedImage();
Invalidate();
}
}
public int GridCols { get; set; } = 2;
public int GridRows { get; set; } = 2;
public Rectangle GridArea { get; set; } = new(100, 100, 256, 256);
public HashSet
SelectedCells { get; private set; } = new();
private Bitmap? sourceImage;
private Bitmap? cachedScaledImage;
private bool dragging = false;
private Point dragStart;
private BufferedGraphicsContext context;
private BufferedGraphics? buffer;
public ImageGridViewer()
{
this.SetStyle(ControlStyles.AllPaintingInWmPaint
| ControlStyles.OptimizedDoubleBuffer
| ControlStyles.ResizeRedraw
| ControlStyles.UserPaint, true);
this.DoubleBuffered = true;
context = BufferedGraphicsManager.Current;
ResetBuffer();
this.Resize += (_, _) => {
ResetBuffer();
UpdateCachedImage();
Invalidate();
};
if (LicenseManager.UsageMode != LicenseUsageMode.Designtime)
{
this.MouseDoubleClick += OnMouseDoubleClick;
this.MouseDown += OnMouseDown;
this.MouseMove += OnMouseMove;
this.MouseUp += OnMouseUp;
}
this.Size = new Size(800, 600);
}
private void ResetBuffer()
{
buffer?.Dispose();
if (this.Width > 0 && this.Height > 0)
buffer = context.Allocate(this.CreateGraphics(), this.ClientRectangle);
}
private void UpdateCachedImage()
{
if (SourceImage == null || Width
Подробнее здесь: [url]https://stackoverflow.com/questions/79687497/slicing-images-in-c-sharp-winforms-shows-some-bleeding-lines-artifacts-in-unity[/url]
Мобильная версия