Pixel grid
This commit is contained in:
@@ -125,7 +125,7 @@ public class PixelCanvas : Control
|
|||||||
RenderOptions.SetBitmapInterpolationMode(this, BitmapInterpolationMode.None);
|
RenderOptions.SetBitmapInterpolationMode(this, BitmapInterpolationMode.None);
|
||||||
context.DrawImage(bmp, srcRect, destRect);
|
context.DrawImage(bmp, srcRect, destRect);
|
||||||
|
|
||||||
if (ShowGrid && _viewport.Zoom >= 4)
|
if (ShowGrid)
|
||||||
DrawPixelGrid(context, imgW, imgH);
|
DrawPixelGrid(context, imgW, imgH);
|
||||||
|
|
||||||
DrawToolPreview(context, imgW, imgH);
|
DrawToolPreview(context, imgW, imgH);
|
||||||
@@ -167,7 +167,11 @@ public class PixelCanvas : Control
|
|||||||
|
|
||||||
private void DrawPixelGrid(DrawingContext context, int imgW, int imgH)
|
private void DrawPixelGrid(DrawingContext context, int imgW, int imgH)
|
||||||
{
|
{
|
||||||
var pen = new Pen(new SolidColorBrush(Color.FromArgb(60, 255, 255, 255)), 1);
|
double zoom = _viewport.Zoom;
|
||||||
|
if (zoom < 4) return;
|
||||||
|
|
||||||
|
var pen = new Pen(Brushes.Black, 1);
|
||||||
|
|
||||||
var clip = new Rect(0, 0, Bounds.Width, Bounds.Height);
|
var clip = new Rect(0, 0, Bounds.Width, Bounds.Height);
|
||||||
var imgRect = _viewport.ImageScreenRect(imgW, imgH);
|
var imgRect = _viewport.ImageScreenRect(imgW, imgH);
|
||||||
var visible = imgRect.Intersect(clip);
|
var visible = imgRect.Intersect(clip);
|
||||||
@@ -185,12 +189,14 @@ public class PixelCanvas : Control
|
|||||||
for (int px = startPx; px <= endPx; px++)
|
for (int px = startPx; px <= endPx; px++)
|
||||||
{
|
{
|
||||||
var (sx, _) = _viewport.PixelToScreen(px, 0);
|
var (sx, _) = _viewport.PixelToScreen(px, 0);
|
||||||
context.DrawLine(pen, new Point(sx, visible.Top), new Point(sx, visible.Bottom));
|
double x = Math.Floor(sx) + 0.5;
|
||||||
|
context.DrawLine(pen, new Point(x, visible.Top), new Point(x, visible.Bottom));
|
||||||
}
|
}
|
||||||
for (int py = startPy; py <= endPy; py++)
|
for (int py = startPy; py <= endPy; py++)
|
||||||
{
|
{
|
||||||
var (_, sy) = _viewport.PixelToScreen(0, py);
|
var (_, sy) = _viewport.PixelToScreen(0, py);
|
||||||
context.DrawLine(pen, new Point(visible.Left, sy), new Point(visible.Right, sy));
|
double y = Math.Floor(sy) + 0.5;
|
||||||
|
context.DrawLine(pen, new Point(visible.Left, y), new Point(visible.Right, y));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem Header="_View">
|
<MenuItem Header="_View">
|
||||||
<MenuItem Header="Pixel _Grid" ToggleType="CheckBox"
|
<MenuItem Header="Pixel _Grid" ToggleType="CheckBox"
|
||||||
IsChecked="{Binding Editor.ShowGrid}" HotKey="Ctrl+G"/>
|
IsChecked="{Binding Editor.ShowGrid, Mode=TwoWay}" HotKey="Ctrl+G"/>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
</Menu>
|
</Menu>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user