Grazie del suggerimento Alka, non sono esperto nemmeno del Forum . Qual'è l'area giusta del Forum ??
Come detto ho provato in questo modo :
public PrintDocument pd;
public PrintPreviewDialog ppd;
public Bitmap FAA; // creata in precedenza
public Graphics g; // creata in precedenza
FAA = new Bitmap(827, 3000); // più grande del formato A4 supposto 827 x 1169
g = Graphics.FromImage(FAA);
int PgFatte;
int PgTot;
void pd_PrintPage(object sender, PrintPageEventArgs e) { ..............
e.Graphics.DrawImage(FAA, new Rectangle(0, 0, FAA.Width, FAA.Height)); .............. }
void Printing() { ..............................
pd = new PrintDocument(); // classe da usare per inglobare il documento
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
ppd = new PrintPreviewDialog();
ppd.Document = pd;
pd.DefaultPageSettings.PaperSize = new PaperSize("Personalizzata", FAA.Width, FAA.Height);
ppd.ShowDialog(); .................. }
come già detto nessun problema : posso vederlo completo in anteprima con scrolling orizzontale e verticale, posso salvarlo su disco in un file .png e rivederlo con programmi tipo GIMP 2 e PAINT
ma NON riesco a stamparlo ( brother MFC - L27000N ) : ottengo solo una pagina ( il primo formato A4 )
Ho provato a suddividere il grafico in più sottografici piccoli senza successo : ( ho curato la sola parte verticale )
void pd_PrintPage(object sender, PrintPageEventArgs e) { ....................
// e.Graphics.DrawImage(FAA, new Rectangle(0, 0, FAA.Width, FAA.Height)); // codice sostituito
GraphicsUnit units = GraphicsUnit.Pixel; // nuovo codice
float w, h; // nuovo codice
w = FAA.Width; // nuovo codice
h = PgFatte * 1169; // nuovo codice
GraphicsUnit units = GraphicsUnit.Pixel; // nuovo codice
RectangleF srcRect = new RectangleF(0.0F, h, w, 1169.0F); // nuovo codice
e.Graphics.DrawImage(FAA, 0, 0, srcRect, units); // nuovo codice
if (++PgFatte < PgTot) e.HasMorePages = true; // nuovo codice
else e.HasMorePages = false; .................. } // nuovo codice
void Printing() { ..............................
pd.DefaultPageSettings.PaperSize = new PaperSize("Personalizzata", FAA.Width, FAA.Height);
PgFatte = 0; // nuovo codice
PgTot = FAA.Height / 1169 + 1; // nuovo codice
ppd.ShowDialog(); .................. }
Cosa sbaglio / cosa manca ?? Grazie per l'eventuale interessamento