Skip to content

Commit 14d2962

Browse files
committed
Add save-as-png function for Windows/CairoSamples.
1 parent eeef2cb commit 14d2962

File tree

2 files changed

+61
-15
lines changed

2 files changed

+61
-15
lines changed

Demo/Windows/CairoSamples/Form1.Designer.cs

Lines changed: 25 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Demo/Windows/CairoSamples/Form1.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public partial class Form1 : Form
1313
public Win32Surface Surface1 { get; private set; }
1414

1515
private readonly byte[] romedalenPngData;
16+
private string lastSelected = "none";
1617

1718
public Form1()
1819
{
@@ -40,6 +41,7 @@ protected override void OnPaint(PaintEventArgs e)
4041

4142
private void arcToolStripMenuItem_Click(object sender, EventArgs e)
4243
{
44+
lastSelected = "arc";
4345
OnPaintAction = cr =>
4446
{
4547
double xc = 128.0;
@@ -71,6 +73,7 @@ private void arcToolStripMenuItem_Click(object sender, EventArgs e)
7173

7274
private void arcNegativeToolStripMenuItem_Click(object sender, EventArgs e)
7375
{
76+
lastSelected = "arcNegative";
7477
OnPaintAction = cr =>
7578
{
7679
double xc = 128.0;
@@ -102,6 +105,7 @@ private void arcNegativeToolStripMenuItem_Click(object sender, EventArgs e)
102105

103106
private void clipToolStripMenuItem_Click(object sender, EventArgs e)
104107
{
108+
lastSelected = "clip";
105109
OnPaintAction = cr =>
106110
{
107111
cr.Arc(128.0, 128.0, 76.8, 0, 2 * Math.PI);
@@ -124,6 +128,7 @@ private void clipToolStripMenuItem_Click(object sender, EventArgs e)
124128

125129
private void clipImageToolStripMenuItem_Click(object sender, EventArgs e)
126130
{
131+
lastSelected = "clipImage";
127132
OnPaintAction = cr =>
128133
{
129134
int w, h;
@@ -150,6 +155,7 @@ private void clipImageToolStripMenuItem_Click(object sender, EventArgs e)
150155

151156
private void curveRectangleToolStripMenuItem_Click(object sender, EventArgs e)
152157
{
158+
lastSelected = "curveRectangle";
153159
OnPaintAction = cr =>
154160
{
155161
/* a custom shape that could be wrapped in a function */
@@ -222,6 +228,7 @@ private void curveRectangleToolStripMenuItem_Click(object sender, EventArgs e)
222228

223229
private void curveToToolStripMenuItem_Click(object sender, EventArgs e)
224230
{
231+
lastSelected = "curveTo";
225232
OnPaintAction = cr =>
226233
{
227234
double x = 25.6, y = 128.0;
@@ -247,6 +254,7 @@ private void curveToToolStripMenuItem_Click(object sender, EventArgs e)
247254

248255
private void dashToolStripMenuItem_Click(object sender, EventArgs e)
249256
{
257+
lastSelected = "dash";
250258
OnPaintAction = cr =>
251259
{
252260
double[] dashes =
@@ -274,6 +282,7 @@ private void dashToolStripMenuItem_Click(object sender, EventArgs e)
274282

275283
private void fillAndStroke2ToolStripMenuItem_Click(object sender, EventArgs e)
276284
{
285+
lastSelected = "fillAndStroke2";
277286
OnPaintAction = cr =>
278287
{
279288
cr.MoveTo(128.0, 25.6);
@@ -300,6 +309,7 @@ private void fillAndStroke2ToolStripMenuItem_Click(object sender, EventArgs e)
300309

301310
private void fillStyleToolStripMenuItem_Click(object sender, EventArgs e)
302311
{
312+
lastSelected = "fillStyle";
303313
OnPaintAction = cr =>
304314
{
305315
cr.LineWidth = 6;
@@ -327,6 +337,7 @@ private void fillStyleToolStripMenuItem_Click(object sender, EventArgs e)
327337

328338
private void gradientToolStripMenuItem_Click(object sender, EventArgs e)
329339
{
340+
lastSelected = "gradient";
330341
OnPaintAction = cr =>
331342
{
332343
Gradient pat = new LinearGradient(0.0, 0.0, 0.0, 256.0);
@@ -352,6 +363,7 @@ private void gradientToolStripMenuItem_Click(object sender, EventArgs e)
352363

353364
private void imageToolStripMenuItem_Click(object sender, EventArgs e)
354365
{
366+
lastSelected = "image";
355367
OnPaintAction = cr =>
356368
{
357369
int w, h;
@@ -376,6 +388,7 @@ private void imageToolStripMenuItem_Click(object sender, EventArgs e)
376388

377389
private void imagepatternToolStripMenuItem_Click(object sender, EventArgs e)
378390
{
391+
lastSelected = "imagepattern";
379392
OnPaintAction = cr =>
380393
{
381394
int w, h;
@@ -413,6 +426,7 @@ private void imagepatternToolStripMenuItem_Click(object sender, EventArgs e)
413426

414427
private void multiSegmentCapsToolStripMenuItem_Click(object sender, EventArgs e)
415428
{
429+
lastSelected = "multiSegmentCaps";
416430
OnPaintAction = cr =>
417431
{
418432
cr.MoveTo(50.0, 75.0);
@@ -434,6 +448,7 @@ private void multiSegmentCapsToolStripMenuItem_Click(object sender, EventArgs e)
434448

435449
private void roundedRectangleToolStripMenuItem_Click(object sender, EventArgs e)
436450
{
451+
lastSelected = "roundedRectangle";
437452
OnPaintAction = cr =>
438453
{
439454
/* a custom shape that could be wrapped in a function */
@@ -466,6 +481,7 @@ private void roundedRectangleToolStripMenuItem_Click(object sender, EventArgs e)
466481

467482
private void setLineCapToolStripMenuItem_Click(object sender, EventArgs e)
468483
{
484+
lastSelected = "setLineCap";
469485
OnPaintAction = cr =>
470486
{
471487
cr.LineWidth = 30.0;
@@ -493,6 +509,7 @@ private void setLineCapToolStripMenuItem_Click(object sender, EventArgs e)
493509

494510
private void setLineJoinToolStripMenuItem_Click(object sender, EventArgs e)
495511
{
512+
lastSelected = "setLineJoin";
496513
OnPaintAction = cr =>
497514
{
498515
cr.LineWidth = 40.96;
@@ -520,6 +537,7 @@ private void setLineJoinToolStripMenuItem_Click(object sender, EventArgs e)
520537

521538
private void textToolStripMenuItem_Click(object sender, EventArgs e)
522539
{
540+
lastSelected = "text";
523541
OnPaintAction = cr =>
524542
{
525543
cr.SelectFontFace("Microsoft Sans Serif", FontSlant.Normal, FontWeight.Bold);
@@ -549,6 +567,7 @@ private void textToolStripMenuItem_Click(object sender, EventArgs e)
549567

550568
private void textAlignCenterToolStripMenuItem_Click(object sender, EventArgs e)
551569
{
570+
lastSelected = "textAlignCenter";
552571
OnPaintAction = cr =>
553572
{
554573
string text = "cairo";
@@ -582,6 +601,7 @@ private void textAlignCenterToolStripMenuItem_Click(object sender, EventArgs e)
582601

583602
private void textExtentsToolStripMenuItem_Click(object sender, EventArgs e)
584603
{
604+
lastSelected = "textExtents";
585605
OnPaintAction = cr =>
586606
{
587607
string text = "cairo";
@@ -613,5 +633,21 @@ private void textExtentsToolStripMenuItem_Click(object sender, EventArgs e)
613633

614634
Invalidate();
615635
}
636+
637+
private void saveAsPngToolStripMenuItem_Click(object sender, EventArgs e)
638+
{
639+
SaveFileDialog dialog = new SaveFileDialog();
640+
dialog.Filter = "PNG|*.png";
641+
dialog.FileName = lastSelected;
642+
if (dialog.ShowDialog() == DialogResult.OK)
643+
{
644+
using (this.Graphics1 = this.CreateGraphics())
645+
using (Surface1 = new Win32Surface(Graphics1.GetHdc()))
646+
using (Context1 = new Context(Surface1))
647+
{
648+
Surface1.WriteToPng(dialog.FileName);
649+
}
650+
}
651+
}
616652
}
617653
}

0 commit comments

Comments
 (0)