mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-02 18:26:27 +13:00
QR Code can copy to clipboard and save as png/svg
This commit is contained in:
parent
ad1f00a51e
commit
5201b39bfa
3 changed files with 107 additions and 2 deletions
34
HelpersLib/Forms/QRCodeForm.Designer.cs
generated
34
HelpersLib/Forms/QRCodeForm.Designer.cs
generated
|
@ -28,8 +28,13 @@ protected override void Dispose(bool disposing)
|
|||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.qrMain = new Gma.QrCodeNet.Encoding.Windows.Forms.QrCodeGraphicControl();
|
||||
this.txtQRCode = new System.Windows.Forms.TextBox();
|
||||
this.cmsQR = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.tsmiSaveAs = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tsmiCopy = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.cmsQR.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// qrMain
|
||||
|
@ -37,6 +42,7 @@ private void InitializeComponent()
|
|||
this.qrMain.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.qrMain.ContextMenuStrip = this.cmsQR;
|
||||
this.qrMain.ErrorCorrectLevel = Gma.QrCodeNet.Encoding.ErrorCorrectionLevel.M;
|
||||
this.qrMain.Location = new System.Drawing.Point(2, 26);
|
||||
this.qrMain.Name = "qrMain";
|
||||
|
@ -56,6 +62,30 @@ private void InitializeComponent()
|
|||
this.txtQRCode.Visible = false;
|
||||
this.txtQRCode.TextChanged += new System.EventHandler(this.txtQRCode_TextChanged);
|
||||
//
|
||||
// cmsQR
|
||||
//
|
||||
this.cmsQR.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tsmiCopy,
|
||||
this.tsmiSaveAs});
|
||||
this.cmsQR.Name = "cmsQR";
|
||||
this.cmsQR.Size = new System.Drawing.Size(212, 48);
|
||||
this.cmsQR.Text = "QR";
|
||||
//
|
||||
// tsmiSaveAs
|
||||
//
|
||||
this.tsmiSaveAs.Name = "tsmiSaveAs";
|
||||
this.tsmiSaveAs.Size = new System.Drawing.Size(211, 22);
|
||||
this.tsmiSaveAs.Text = "Save image as PNG...";
|
||||
this.tsmiSaveAs.Click += new System.EventHandler(this.tsmiSaveAs_Click);
|
||||
//
|
||||
// tsmiCopy
|
||||
//
|
||||
this.tsmiCopy.Name = "tsmiCopy";
|
||||
this.tsmiCopy.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));
|
||||
this.tsmiCopy.Size = new System.Drawing.Size(211, 22);
|
||||
this.tsmiCopy.Text = "Copy to clipboard";
|
||||
this.tsmiCopy.Click += new System.EventHandler(this.tsmiCopy_Click);
|
||||
//
|
||||
// QRCodeForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
|
@ -70,6 +100,7 @@ private void InitializeComponent()
|
|||
this.Text = "ShareX - QR code";
|
||||
this.TopMost = true;
|
||||
this.Resize += new System.EventHandler(this.QRCodeForm_Resize);
|
||||
this.cmsQR.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
|
@ -79,5 +110,8 @@ private void InitializeComponent()
|
|||
|
||||
private Gma.QrCodeNet.Encoding.Windows.Forms.QrCodeGraphicControl qrMain;
|
||||
private System.Windows.Forms.TextBox txtQRCode;
|
||||
private System.Windows.Forms.ContextMenuStrip cmsQR;
|
||||
private System.Windows.Forms.ToolStripMenuItem tsmiCopy;
|
||||
private System.Windows.Forms.ToolStripMenuItem tsmiSaveAs;
|
||||
}
|
||||
}
|
|
@ -23,8 +23,12 @@ You should have received a copy of the GNU General Public License
|
|||
|
||||
#endregion License Information (GPL v3)
|
||||
|
||||
using Gma.QrCodeNet.Encoding;
|
||||
using Gma.QrCodeNet.Encoding.Windows.Render;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace HelpersLib
|
||||
|
@ -69,5 +73,69 @@ private void qrMain_Click(object sender, EventArgs e)
|
|||
Close();
|
||||
}
|
||||
}
|
||||
|
||||
private void tsmiCopy_Click(object sender, EventArgs e)
|
||||
{
|
||||
GraphicsRenderer gRender = new GraphicsRenderer(new FixedModuleSize(30, QuietZoneModules.Four));
|
||||
BitMatrix matrix = qrMain.GetQrMatrix();
|
||||
using (MemoryStream stream = new MemoryStream())
|
||||
{
|
||||
gRender.WriteToStream(matrix, ImageFormat.Png, stream, new Point(600, 600));
|
||||
ClipboardHelpers.CopyImage(Image.FromStream(stream));
|
||||
}
|
||||
}
|
||||
|
||||
private void tsmiSaveAs_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (SaveFileDialog saveFileDialog = new SaveFileDialog())
|
||||
{
|
||||
saveFileDialog.Filter = @"PNG (*.png)|*.png|Bitmap (*.bmp)|*.bmp|Encapsuled PostScript (*.eps)|*.eps|SVG (*.svg)|*.svg";
|
||||
saveFileDialog.FileName = txtQRCode.Text;
|
||||
saveFileDialog.DefaultExt = "png";
|
||||
|
||||
if (saveFileDialog.ShowDialog() != DialogResult.OK)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (saveFileDialog.FileName.EndsWith("eps"))
|
||||
{
|
||||
BitMatrix matrix = qrMain.GetQrMatrix();
|
||||
|
||||
// Initialize the EPS renderer
|
||||
var renderer = new EncapsulatedPostScriptRenderer(
|
||||
new FixedModuleSize(6, QuietZoneModules.Two), // Modules size is 6/72th inch (72 points = 1 inch)
|
||||
new FormColor(Color.Black), new FormColor(Color.White));
|
||||
|
||||
using (var file = File.Open(saveFileDialog.FileName, FileMode.CreateNew))
|
||||
{
|
||||
renderer.WriteToStream(matrix, file);
|
||||
}
|
||||
}
|
||||
else if (saveFileDialog.FileName.EndsWith("svg"))
|
||||
{
|
||||
BitMatrix matrix = qrMain.GetQrMatrix();
|
||||
|
||||
// Initialize the EPS renderer
|
||||
var renderer = new SVGRenderer(
|
||||
new FixedModuleSize(6, QuietZoneModules.Two), // Modules size is 6/72th inch (72 points = 1 inch)
|
||||
new FormColor(Color.FromArgb(150, 200, 200, 210)), new FormColor(Color.FromArgb(200, 255, 155, 0)));
|
||||
|
||||
using (var file = File.OpenWrite(saveFileDialog.FileName))
|
||||
{
|
||||
renderer.WriteToStream(matrix, file, false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
GraphicsRenderer gRender = new GraphicsRenderer(new FixedModuleSize(30, QuietZoneModules.Four));
|
||||
BitMatrix matrix = qrMain.GetQrMatrix();
|
||||
using (FileStream stream = new FileStream(saveFileDialog.FileName, FileMode.Create))
|
||||
{
|
||||
gRender.WriteToStream(matrix, ImageFormat.Png, stream, new Point(600, 600));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -112,9 +112,12 @@
|
|||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="cmsQR.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
Loading…
Reference in a new issue