public override System.Drawing.Image CreateDrawingImage(System.Drawing.Color foreground, System.Drawing.Color background) {
int barWidth = (int)x;
if (barWidth <= 0)
barWidth = 1;
int barDistance = (int)n;
if (barDistance <= barWidth)
barDistance = barWidth + 1;
int barShort = (int)size;
if (barShort <= 0)
barShort = 1;
int barTall = (int)barHeight;
if (barTall <= barShort)
barTall = barShort + 1;
byte[] bars = GetBarsPostnet(code);
int width = bars.Length * barDistance;
byte flip = 1;
if (codeType == PLANET) {
flip = 0;
bars[0] = 0;
bars[bars.Length - 1] = 0;
}
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(width, barTall);
int seg1 = barTall - barShort;
for (int i = 0; i < seg1; ++i) {
int idx = 0;
for (int k = 0; k < bars.Length; ++k) {
bool dot = (bars[k] == flip);
for (int j = 0; j < barDistance; ++j) {
bmp.SetPixel(idx++, i, (dot && j < barWidth) ? foreground : background);
}
}
}
for (int i = seg1; i < barTall; ++i) {
int idx = 0;
for (int k = 0; k < bars.Length; ++k) {
for (int j = 0; j < barDistance; ++j) {
bmp.SetPixel(idx++, i, (j < barWidth) ? foreground : background);
}
}
}
return bmp;
}
}