我用 QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
qrCodeEncoder.QRCodeScale = 4;
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
Bitmap bt = qrCodeEncoder.Encode(str, Encoding.Default);
bt.Save(QRurl, ImageFormat.Png);
二維碼 生成后

如何把里面的黑方點 變成下面 圓點

或者說,如何 能直接生成 圓點的二維碼。 我用了ZXing.dll 和 ThoughtWorks.QRCode.Codec.dll 都沒有圓點說明。
有繪制大神講解下嗎? 在下學習了
uj5u.com熱心網友回復:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace QRCodeTransfer
{
public partial class Form1 : Form
{
private Bitmap raw_image = (Bitmap)Image.FromFile("raw_code.png");
private Bitmap target_image = null;
public Form1()
{
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawImage(raw_image, 0, 0, panel1.Width, panel1.Height);
}
private void panel2_Paint(object sender, PaintEventArgs e)
{
if(target_image != null)
{
e.Graphics.DrawImage(target_image, 0, 0, panel2.Width, panel2.Height);
}
}
private void button1_Click(object sender, EventArgs e)
{
//1.計算最小寬度
target_image = new Bitmap(raw_image.Width, raw_image.Height);
int x = raw_image.Width / 2;
Rectangle center_box=new Rectangle();
Color center_color = raw_image.GetPixel(x, x);
int box_left = 0;
int box_right = 0;
while (x>0)
{
if(raw_image.GetPixel(x,x)!=center_color)
{
box_left = x+1;
break;
}
x--;
}
x = raw_image.Width / 2;
while (x < raw_image.Width)
{
if (raw_image.GetPixel(x, x) != center_color)
{
box_right = x - 1;
break;
}
x++;
}
int a = box_right - box_left + 1;
center_box = new Rectangle(box_left, box_left, a,a);
//2.繪制新二維碼
using (Graphics g = Graphics.FromImage(target_image))
{
g.Clear(Color.White);
int box_count = raw_image.Width / center_box.Width;
for (int i = 0; i < box_count; i++)
{
for (int j = 0; j < box_count; j++)
{
if (raw_image.GetPixel(i * center_box.Width, j * center_box.Height) == center_color)
{
Rectangle box = new Rectangle(i * center_box.Width, j * center_box.Height, center_box.Width, center_box.Height);
g.FillEllipse(Brushes.Black, box);
}
}
}
}
target_image.Save("target.png", System.Drawing.Imaging.ImageFormat.Png);
//3.更新界面
panel2.Invalidate();
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/268911.html
標籤:ASP.NET
