1

我正在使用 C++ Builder 在 Android 上创建一个应用程序,我需要打印出(不显示在屏幕上)已经创建的位图。要打印出来,我使用的是 Embarcadero 提供的“经典蓝牙基本应用程序”。要转换我正在使用此代码:

#include "System.NetEncoding.hpp"

TMemoryStream *ms;
TStringStream *ss;
String s;
UnicodeString result;

ms = new TMemoryStream();
ss = new TStringStream();
bmpResult->SaveToStream(ms);
ms->Position = 0;
EncodeStream(ms, ss);
s = ss->DataString;
ms->Free();
ss->Free();
result = s;
return result;

它返回给我base64字符串,所以我可以将它传递给打印输出函数,但它会打印整个字符串,我需要位图(图像本身)。

我该怎么做?

编辑:

我用来与打印机交互的代码:

  TBytes ToSend;
  if((FSocket == NULL) || (ItemIndex != ComboBoxPaired->ItemIndex)) {
      if(ComboBoxPaired->ItemIndex > -1) {
          TBluetoothDevice * LDevice = FPairedDevices->Items[ComboBoxPaired->ItemIndex];
          FSocket = LDevice->CreateClientSocket(StringToGUID(ServiceGUI), false);
          if(FSocket != NULL) {
              ItemIndex = ComboBoxPaired->ItemIndex;
              FSocket->Connect();
              //func is AnsiString and passed as a parameter in this function
              ToSend = TEncoding::UTF8->GetBytes(func);
              FSocket->SendData(ToSend);

              delete FSocket;
              FSocket = NULL;
          }
          else {
              ShowMessage("Error 1");
          }
      }
      else {
              ShowMessage("Error 2");
      }
  }
      else {
          ShowMessage("Error 4");

      }

我尝试使用TEncoding对位图进行编码并传递给ToSend,但我找不到并且没有意义,因为它会打印字符串(与 base64 相同的情况)。

4

0 回答 0