Skip to content

Commit ddea675

Browse files
committed
add alpha support, add opacity slider, use opacity in currentcolor
1 parent 934897b commit ddea675

File tree

2 files changed

+25
-16
lines changed

2 files changed

+25
-16
lines changed

PixelArtTool/MainWindow.xaml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<Image Source="/Resources/Buttons/emptybutton.png" />
1717
</Button>
1818
</ToolBar>
19-
19+
2020
<ToolBar Band="1" BandIndex="1" VerticalAlignment="Top">
2121
<RadioButton GroupName="Toolbar" Style="{StaticResource {x:Type ToggleButton}}">
2222
<Image Source="/Resources/Buttons/drawmode.png" />
@@ -34,8 +34,13 @@
3434
<Image Source="/Resources/Buttons/emptybutton.png" />
3535
</RadioButton>
3636
</ToolBar>
37+
38+
<ToolBar Band="1" BandIndex="1" VerticalAlignment="Top">
39+
<Slider x:Name="sliderOpacity" ToolTip="Opacity" HorizontalAlignment="Left" Margin="0,0,0,0" VerticalAlignment="Top" Width="50" Height="28" Value="255" Maximum="255" LargeChange="0" SmallChange="1" ValueChanged="OpacitySliderValueChanged"/>
40+
</ToolBar>
41+
3742
</ToolBarTray>
38-
43+
3944
<StatusBar Height="30" Margin="0,281,0,0" VerticalAlignment="Bottom">
4045
<StatusBarItem Height="30" VerticalAlignment="Center">
4146
<Label x:Name="lblMousePos" Content="Label"/>

PixelArtTool/MainWindow.xaml.cs

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,25 +23,26 @@ public partial class MainWindow : Window
2323
Image drawingImage;
2424
Image paletteImage;
2525

26+
// bitmap settings
2627
int canvasResolutionX = 16;
2728
int canvasResolutionY = 16;
28-
2929
int paletteResolutionX = 4;
3030
int paletteResolutionY = 16;
31-
32-
int prevX;
33-
int prevY;
34-
3531
int canvasScaleX = 1;
3632
int paletteScaleX = 1;
3733
int paletteScaleY = 1;
38-
3934
int dpiX = 96;
4035
int dpiY = 96;
4136

37+
// colors
4238
PixelColor currentColor;
4339
PixelColor[] palette;
4440
int currentColorIndex = 0;
41+
byte opacity = 255;
42+
43+
// mouse
44+
int prevX;
45+
int prevY;
4546

4647

4748
public MainWindow()
@@ -58,7 +59,7 @@ void Start()
5859
RenderOptions.SetEdgeMode(drawingImage, EdgeMode.Aliased);
5960
w = (MainWindow)Application.Current.MainWindow;
6061
canvasScaleX = (int)drawingImage.Width / canvasResolutionX;
61-
canvasBitmap = new WriteableBitmap(canvasResolutionX, canvasResolutionY, dpiX, dpiY, PixelFormats.Bgr32, null);
62+
canvasBitmap = new WriteableBitmap(canvasResolutionX, canvasResolutionY, dpiX, dpiY, PixelFormats.Bgra32, null);
6263
drawingImage.Source = canvasBitmap;
6364

6465
// drawing events
@@ -77,14 +78,13 @@ void Start()
7778
dpiY = 96;
7879
paletteScaleX = (int)paletteImage.Width / paletteResolutionX;
7980
paletteScaleY = (int)paletteImage.Height / paletteResolutionY;
80-
paletteBitmap = new WriteableBitmap(paletteResolutionX, paletteResolutionY, dpiX, dpiY, PixelFormats.Bgr32, null);
81+
paletteBitmap = new WriteableBitmap(paletteResolutionX, paletteResolutionY, dpiX, dpiY, PixelFormats.Bgra32, null);
8182
paletteImage.Source = paletteBitmap;
8283

8384
// palette events
8485
paletteImage.MouseLeftButtonDown += new MouseButtonEventHandler(PaletteLeftButtonDown);
8586
//paletteImage.MouseRightButtonDown += new MouseButtonEventHandler(PaletteRightButtonDown);
8687

87-
8888
// init
8989
LoadPalette();
9090
currentColorIndex = 5;
@@ -129,11 +129,8 @@ void LoadPalette()
129129
x = i % paletteResolutionX;
130130
y = (i % len) / paletteResolutionX;
131131
}
132-
133-
134132
}
135133

136-
137134
void SetPixel(WriteableBitmap bitmap, int x, int y, int color)
138135
{
139136
try
@@ -278,7 +275,6 @@ void PaletteLeftButtonDown(object sender, MouseButtonEventArgs e)
278275

279276
void UpdateCurrentColor()
280277
{
281-
// var col = Color.FromArgb(palette[currentColorIndex].Alpha, palette[currentColorIndex].Red, palette[currentColorIndex].Green, palette[currentColorIndex].Blue);
282278
var col = Color.FromArgb(currentColor.Alpha, currentColor.Red, currentColor.Green, currentColor.Blue);
283279
rectCurrentColor.Fill = new SolidColorBrush(col);
284280
}
@@ -377,7 +373,7 @@ private void OnClearButton(object sender, RoutedEventArgs e)
377373
// clears bitmap by re-creating it
378374
void ClearImage(WriteableBitmap target)
379375
{
380-
canvasBitmap = new WriteableBitmap(canvasResolutionX, canvasResolutionY, dpiX, dpiY, PixelFormats.Bgr32, null);
376+
canvasBitmap = new WriteableBitmap(canvasResolutionX, canvasResolutionY, dpiX, dpiY, PixelFormats.Bgra32, null);
381377
drawingImage.Source = canvasBitmap;
382378
}
383379

@@ -417,5 +413,13 @@ public static void UseDefaultExtAsFilterIndex(FileDialog dialog)
417413
}
418414
}
419415

416+
private void OpacitySliderValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
417+
{
418+
var slider = sender as Slider;
419+
opacity = (byte)slider.Value;
420+
currentColor.Alpha = opacity;
421+
// ... Set Window Title.
422+
//this.Title = "Value: " + value.ToString("0.0") + "/" + slider.Maximum;
423+
}
420424
} // class
421425
} // namespace

0 commit comments

Comments
 (0)