Отчет Devexpress XRPictureBox принимает только System.Drawing.Image, который несовместим с Linux.C#

Место общения программистов C#
Ответить
Anonymous
 Отчет Devexpress XRPictureBox принимает только System.Drawing.Image, который несовместим с Linux.

Сообщение Anonymous »

Я использую Devexpress Report для выставления счета-фактуры на своем ноутбуке с macOS. В счете-фактуре должен быть QR-код, мне удалось успешно создать изображение QR-кода, но я не могу отобразить его в счете, поскольку ячейка XRPictureBox принимает только System.Drawing.Image, который не работает на платформах Linux.
Версия Devexpress (я не собираюсь ее менять): 22.2.5
Код генерации QR, который работает нормально:

Код: Выделить всё

using (QRCodeGenerator QrGenerator = new QRCodeGenerator())
{
using (QRCodeData QrCodeInfo = QrGenerator.CreateQrCode(zatca.ToBase64(), QRCodeGenerator.ECCLevel.Q))
using (PngByteQRCode QrCode = new PngByteQRCode(QrCodeInfo))
{
byte[] BitmapArray = QrCode.GetGraphic(20);

string base64Image = Convert.ToBase64String(BitmapArray);
report.QRCodeImage.Value = base64Image;

}
}
Функция дизайнера, отображающая QR-изображение в отчете (проблема):

Код: Выделить всё

private void xrInvoiceQRCode_BeforePrint(object sender, CancelEventArgs e)
{
string base64String = this.Parameters["QRCodeImage"].Value.ToString();
if (base64String != "null")
{

XRPictureBox xrBox = sender as XRPictureBox;
Image img = ByteArrayToImage(Convert.FromBase64String(base64String));
xrBox.Image = img;
}
}
ByteArrayToImage(), который преобразует байты в System.Drawing.Image, который не работает в Linux:

Код: Выделить всё

public Image ByteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}
Я написал эту функцию для преобразования байтов в SixLabors.ImageSharp.Image, который, как я читал, является кроссплатформенным:

Код: Выделить всё

public SixLabors.ImageSharp.Image ByteArrayToImageSharp(byte[] byteArrayIn)
{
using (MemoryStream ms = new MemoryStream(byteArrayIn))
{
return SixLabors.ImageSharp.Image.Load(ms);
}

}
Но основная проблема заключается в том, что XRPictureBox.Image принимает System.Drawing.Image, а не SixLabors.ImageSharp.Image.
Так как же мне отобразить свое изображение (без изменения кода генерации qr, поскольку оно работает на 100%) в отчете с кодом, который работает на всех платформах?>

Подробнее здесь: https://stackoverflow.com/questions/798 ... -is-not-co
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»