Печать и экспорт на USB (формат файла: XML/CSV/Excel) Функциональность в приложении Smart device[Symbo Motoroal MC75(Windows Mobile 6.1)]?

У меня есть форма, которая содержит поля со списком, текстовые поля и сетку данных со многими строками. Я хочу распечатать (со сгенерированным штрих-кодом [приложение, генерирующее штрих-код как изображение]), а также хочу экспортировать данные на этой странице в формате CSV/XML/Excel на USB или физический каталог телефона. Пожалуйста, покажите мне, как это сделать. Это мое первое приложение для Windows Mobile. Я не такой мудрый в Windows Mobile. Пожалуйста, помогите мне найти лучшее решение в виде кода или ссылки или просто направьте меня.

1 ответ

Решение

Чтобы создать Распечатку, вы должны будете написать в свой PrintDocument, используя GDI. Там нет ничего встроенного. Вы могли бы сделать скриншот (код ниже).

Экспорт данных в CSV лучше всего выполнять самостоятельно. Просто создайте / откройте поток файлов и запишите в него все, что захотите.

Снимок экрана: требуется PInvoke для BitBlt и GetDC

const int SRCCOPY = 0x00CC0020;

[DllImport("coredll.dll")]
private static extern int BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, uint dwRop);

[DllImport("coredll.dll")]
private static extern IntPtr GetDC(IntPtr hwnd);

public Bitmap ScreenCapture(string fileName) {
  Bitmap bitmap = new Bitmap(this.Width, this.Height);
  using (Graphics gScr = Graphics.FromHdc(GetDC(IntPtr.Zero))) { // A Zero Pointer will Get the screen context
    using (Graphics gBmp = Graphics.FromImage(bitmap)) { // Get the bitmap graphics
      BitBlt(gBmp.GetHdc(), 0, 0, this.Width, this.Height, gScr.GetHdc(), this.Left, this.Top, SRCCOPY); // Blit the image data
    }
  }
  bitmap.Save(fileName, ImageFormat.Png); //Saves the image
  return bitmap;
}

[Обновить]:

  • Если вы хотите сохранить изображение в определенном месте, отправьте полный путь с именем файла (т.е. \\Windows\Temp\screenShot.png).

  • Если вы хотите исключить элементы управления, уменьшите this.Width, this.Height, this.Left а также this.Right пока у вас есть размер, который соответствует региону, который работает.

  • Последнее, если вы хотите Bitmap использовать в памяти, просто сохраните его и используйте по мере необходимости. Пример:

    panel1.Image = ScreenCapture ("image.png"); panel1.BringToFront ();

Надеюсь, это поможет.

Другие вопросы по тегам