Печать и экспорт на 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 ();
Надеюсь, это поможет.