私はそれがモデルによって引き起こされているのではないと確信していますが、単位ミリメートルによって引き起こされました。今私はこれを解決する方法を知らない。
ので打撃としてcompeletコード:
public class PrintEntity {
public bool HorizontalFlip { get; private set; }
public bool VerticalFlip { get; private set; }
public float PageSizeW { get; private set; }
public float PageSizeH { get; private set; }
public List<PrintDataBase> PrintList { get; private set; }
public void SetValue(float _PageSizeW,float _PageSizeH,List<PrintDataBase> _PL
,bool _HF=false,bool _VF=false)
{
HorizontalFlip = _HF;
VerticalFlip = _VF;
PageSizeW = _PageSizeW;
PageSizeH = _PageSizeH;
PrintList = _PL;
}
}
public class PrintDataBase {
public int PType { get; private set; }
public float XPosition { get; private set; }
public float YPosition { get; private set; }
public bool IsEnable { get; private set; }
public int FontSize { get; private set; }
public bool IsBold { get; private set; }
public int Width { get; private set; }
public int Height { get; private set; }
public string Value { get; private set; }
public void SetValue(float _XPosition,float _YPosition,int _Width,int _Height,
int _FontSize, string _Value, int _PType = 0, bool _IsBold = false, bool _IsEnable = false)
{
XPosition = _XPosition;
YPosition = _YPosition;
Width = _Width;
Height = _Height;
FontSize = _FontSize;
PType = _PType;
IsBold = _IsBold;
IsEnable = _IsEnable;
Value = _Value;
}
}
private void FontToPrint_PrintPage(object sender, PrintPageEventArgs ev)
{
Graphics e = ev.Graphics;
float pdix = e.DpiX/25.4F;
float pdiy = e.DpiY/25.4F;
e.PageUnit = GraphicsUnit.Millimeter;
Font font = new Font("Arial", 20, FontStyle.Bold);
SolidBrush brush = new SolidBrush(Color.Black);
printModel.PrintList.RemoveAll(m => (m.IsEnable == false));
foreach (PrintDataBase model in printModel.PrintList)
{
if (model.PType == 2)
{
//Create QR Code Form Google.zxing
Bitmap codeImg = CreatCodeImg(model.Value, (int)(model.Width * pdix), (int)(model.Height * pdiy));
e.DrawImage(codeImg, model.XPosition, model.YPosition, model.Width, model.Height);
continue;
}
if (model.IsBold)
{
font = new Font("Arial", model.FontSize, FontStyle.Bold);
}
else
{
font = new Font("Arial", model.FontSize);
}
e.DrawString(model.Value, font, brush, model.XPosition , model.YPosition);
}
}
私はあなたのコードでそれを説明するだろう何も表示されません。しかし、どこからQRコードが来るのか分かりません。どのように、いつ、モデルを作成/計算するのか。 – TaW
そういうコードはありません。クリスタルボールには、printModel.PrintListを変更してX/YPositionの値を変更して、印刷に適したコードがあると言われています。そのコードは一度だけ実行する必要があります。 –