1 - Load foto dalam objek wxImage, mengubah ukurannya, mengubahnya menjadi suatu wxBitmap. Anda perlu untuk mengubah ukuran gambar sehingga Anda dapat mencetak piksel demi piksel dan mendapatkan gambar dicetak dengan ukuran yang diinginkan. Untuk menentukan ukuran gambar yang Anda perlu tahu ukuran cetak yang diinginkan atau DPI gambar. Anda dapat mengetahui resolusi printer menggunakan wxDC:: GetPPI () . Mulai dari ukuran gambar asli dan resolusi printer Anda dapat menghitung ukuran gambar baru dan rescale itu. Jika Anda tahu gambar itu DPI Anda dapat menghitung ukuran gambar baru dalam pixel menggunakan rumus ini:
newWidth_pixels = printedWidth_mm * PPI / 25.4
2 - Cetak bitmap, memastikan bahwa wxWidgets tidak mengubah ukurannya . Ini adalah bagian sulit, karena saya berakhir dengan gambar yang lebih besar daripada apa yang saya inginkan.Masalahnya adalah bahwa saya mengatur skala pengguna dengan wxDC:: SetUserScale () dan skala yang juga diterapkan pada gambar, memperbesarnya. Solusinya adalah, jelas, untuk mengatur skala pengguna untuk 1 sebelum menggambar bitmap. Berikut adalah fungsi yang saya gunakan untuk tujuan (x dan y adalah mencetak koordinat dalam mm):
void PrintBitmap( wxDC *dc, const float logUnitsFactor, wxBitmap &bitmap, const float x, const float y )
{
double xScale, yScale;
dc->GetUserScale( &xScale, &yScale );
dc->SetUserScale( 1, 1 );
dc->DrawBitmap( bitmap, x*logUnitsFactor*xScale, y*logUnitsFactor*yScale, true );
dc->SetUserScale( xScale, yScale );}
Sumber: http://accountingplusplus.blogspot.com/2011/09/printing-images-with-wxwidgets.html
0 ɹɐʇuǝɯoʞ:
Posting Komentar