带白色 space C++ 的移印线

pad print line with white space C++

在 C++ 中,我使用 unsigned char 指针来保存字节数组,这样我就可以在打印行的每个元素中放入 8 位颜色代码。

我有一个数组保存数据,一个数组保存白色 space,我正在使用 for 循环填充第三个数组,以便数据在开头,白色 space在最后。

创建指针时,由于我在运行时监视内存,所有元素的默认值为0xCD,在颜色图表上为洋红色。我使用 for 循环用 0x00 填充我想要的字节,但它不会覆盖第三个数组的默认数组值。

所以,我的打印机打印的是洋红色而不是白色 space。然而,我可以只用数据覆盖那个数组。但不是白色space。我不确定这是什么原因。谁能给我任何见解?这是我的代码...

PrintLine(unsigned char* pbData, unsigned long ulDataSize, UINT xoffset)
{ 
   if (xoffset > 0) 
   {  //create pointer to byte array for xoffset 
      unsigned char* offsetData; 
      offsetData = new unsigned char[(xoffset / 8)]; //x offset is divided by 8 
      //to convert pixels to bytes
      //create pointer to byte array to hold image data and offset data
      unsigned char* finalData;
      finalData = new unsigned char[ulDataSize + (xoffset / 8)];
      //begin final data with image data passed into the function
     for (int count = 0; count < ulDataSize; count++)
     {
         finalData[count] = pbData[count];
     }

     //populate offset data with blank bytes
     for (int count = 0; count < (xoffset / 8); count++)
     {
         offsetData[count] = 0x00;
     }

     //add blank data for offset to finalData
     int position = 0;
     for (int count = ulDataSize; count < ulDataSize + (xoffset / 8);count++)
     {
         finalData[ulDataSize] = offsetData[position];//also tried =0x00
         position++;
     }
     //Send data to printer.
     if (!(Write(finalData, ulDataSize + (xoffset / 8)))
     {       
         return FALSE;
     }
    return TRUE;
  }
}

乍一看你的代码没有错误,但我看到了一些看起来很可疑的东西。我说的是这条线:

finalData[ulDataSize] = offsetData[position]; //also tried =0x00

我想你想要的是:

finalData[count] = offsetData[position];//also tried =0x00

另一方面,您可以这样编写循环:

for (int count = 0; count < (xoffset / 8); count++)
{
    finalData[ulDataSize + count] = offsetData[count];
}

使代码更具可读性。