作成日: 2022/07/01 最終更新日: 2022/11/09
文書種別
使用方法
詳細
分割(連結)QRCodeを作成するには、QRCodeOptionsのConnectionプロパティをTrueにした後、Model、Version、ErrorLevelの各プロパティを設定します。
設定したModel、Version、ErrorLevelの値に従って、自動的に分割数が決定され、複数のQRコードが生成されます。
※Versionとは、バーコードのサイズを表します。値が大きいほど、多くの情報を格納できる情報量が多くなり、通常はバーコードサイズが大きくなります。このプロパティには、ModelプロパティがModel1の場合には1~14を、Model2の場合には1~40を指定します。
※分割の最大数は、QRコードの規格により16個です。
以下に、分割(連結)QRCodeを生成してPictureBoxに表示するサンプルを記載します。
※フォームにPanelとFlowLayoutPanelを配置し、Panel上に4つのラベル(Label1~4)、lbGenerateという名前のLinkedLabel、ComboBox、TextBoxを貼り付けて、以下のコードを追加し、動作をご確認ください。

◎サンプルコード(VB)
設定したModel、Version、ErrorLevelの値に従って、自動的に分割数が決定され、複数のQRコードが生成されます。
※Versionとは、バーコードのサイズを表します。値が大きいほど、多くの情報を格納できる情報量が多くなり、通常はバーコードサイズが大きくなります。このプロパティには、ModelプロパティがModel1の場合には1~14を、Model2の場合には1~40を指定します。
※分割の最大数は、QRコードの規格により16個です。
以下に、分割(連結)QRCodeを生成してPictureBoxに表示するサンプルを記載します。
※フォームにPanelとFlowLayoutPanelを配置し、Panel上に4つのラベル(Label1~4)、lbGenerateという名前のLinkedLabel、ComboBox、TextBoxを貼り付けて、以下のコードを追加し、動作をご確認ください。

◎サンプルコード(VB)
Imports C1.BarCode
Imports C1.Win.BarCode
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Label3.Text = TextBox1.Text.Length.ToString()
ComboBox1.SelectedIndex = 0
TextBox1.Text = "1111111111aaaaaaaaaa2222222222bbbbbbbbbb3333333333cccccccccc"
TextBox1.Text = TextBox1.Text + "4444444444dddddddddd5555555555eeeeeeeeee"
End Sub
Private Sub LbGenerate_Click(sender As Object, e As EventArgs) Handles LbGenerate.Click
GenerateQrCodes()
End Sub
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
Label3.Text = TextBox1.Text.Length.ToString()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
GenerateQrCodes()
End Sub
Private Sub GenerateQrCodes()
_panel.Controls.Clear()
If String.IsNullOrEmpty(TextBox1.Text) Then
Return
End If
Dim Code = New C1BarCode
Code.CodeType = CodeType.QRCode
Code.Text = TextBox1.Text
Code.QRCodeOptions.Connection = True
Code.QRCodeOptions.Model = QRCodeModel.Model2
Dim range = Convert.ToInt32(ComboBox1.SelectedItem)
Code.QRCodeOptions.Version = range
Code.QRCodeOptions.ErrorLevel = QRCodeErrorLevel.Medium
Enumerable.ToList(Of Integer)(Enumerable.Range(0, &H10)).ForEach(Function(ByVal x As Integer)
Code.QRCodeOptions.ConnectionNumber = x
Dim image As Image = Code.Image
Dim box1 As New PictureBox
box1.Image = image
box1.Size = New Size(200, 200)
Dim box As PictureBox = box1
If (DirectCast(box.Image, Bitmap).GetPixel(0, 0).Name <> "ffffffff") Then
Me._panel.Controls.Add(box)
End If
End Function)
' テキストのサイズを表示
Me.Label3.Text = Me.TextBox1.Text.Length.ToString
End Sub
End Class
◎サンプルコード(C#)
using C1.BarCode;
using C1.Win.BarCode;
namespace QRCode_connection
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
label3.Text = textBox1.Text.Length.ToString();
comboBox1.SelectedIndex = 0;
textBox1.Text = "1111111111aaaaaaaaaa2222222222bbbbbbbbbb3333333333cccccccccc";
textBox1.Text = textBox1.Text + "4444444444dddddddddd5555555555eeeeeeeeee";
}
private void lbGenerate_Click(object sender, EventArgs e)
{
GenerateQrCodes();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
label3.Text = textBox1.Text.Length.ToString();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
GenerateQrCodes();
}
private void GenerateQrCodes()
{
_panel.Controls.Clear();
if (string.IsNullOrEmpty(textBox1.Text)) return;
var Code = new C1BarCode();
Code.CodeType = CodeType.QRCode;
Code.Text = textBox1.Text;
Code.QRCodeOptions.Connection = true;
Code.QRCodeOptions.Model = QRCodeModel.Model2;
var range = Convert.ToInt32(comboBox1.SelectedItem);
Code.QRCodeOptions.Version = range;
Code.QRCodeOptions.ErrorLevel = QRCodeErrorLevel.Medium;
Enumerable.Range(0, 16)
.ToList()
.ForEach(x =>
{
Code.QRCodeOptions.ConnectionNumber = x;
var imageCode = Code.Image;
var pictureBox = new PictureBox() { Image = imageCode, Size = new Size(200, 200) };
Color c = ((Bitmap)(pictureBox.Image)).GetPixel(0, 0);
if (c.Name != "ffffffff")
{
_panel.Controls.Add(pictureBox);
}
});
// テキストのサイズを表示
label3.Text = textBox1.Text.Length.ToString();
}
}
}
【分割(連結)QRコードに関する補足説明】
分割(連結)QRコードは「文字列を複数のシンボルに分割する」機能ではありません。
「複数のシンボルで一つの文字列を表現する」機能です。
分割(連結)QRコードとして出力したシンボルの読み込みには、連結機能に対応したリーダーが必要です。
各シンボルには、それが「何個中の何番目であるか」などの情報も含まれるため、シンボル単体では正しい文字列を読み込むことができません。
2バイト文字を設定すると、1文字のデータが2つのシンボルに跨って出力される場合もあります。これは仕様上の動作です。
スマートフォンやタブレット端末で利用できるQRコードリーダーアプリの多くは、連結機能に対応していません。
分割(連結)QRコードの出力を確認するときは、連結機能への対応を表明しているアプリをインストールするか、専用のスキャナ等をご利用ください。