05. marts 2008 - 00:07
Der er
3 kommentarer og
1 løsning
Udskrive billede
Hejsa.
Jeg har en lang velfungerende kode der udskriver en blanket.
Er der en let måde at udskrive et lile logo i det ene hørne, eller er det ikke bare lige?
05. marts 2008 - 07:59
#2
Det afhænger sør'me nok lidt af hvordan du printer.
Hvis du bruger PrintDocument klassen er det så simpelt som:
...
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
pd.Print();
}
void pd_PrintPage(object sender, PrintPageEventArgs e)
{
Image img = Image.FromFile("somefile.jpg"); //TODO: Dit filnavn her
e.Graphics.DrawImage(img, 10, 10); //TODO: Udskift koordinater
//TODO: Resten af dit print her
}
07. marts 2008 - 00:21
#3
Hejsa.
Jeg er ikke helt med på hvor jeg kan sætte det ind. Jeg sætter her koden:
private void btn_print_Click(object sender, System.EventArgs e)
{
Bitmap bitmap,page;
Graphics myGfx;
System.Drawing.Size cardSize,pageSizeNormal,pageSizeLandscape,gridNormal,gridLandscape,gridToUse;
bool allowMoreOnSamePage=chkbox_allowMoreOnSamePage.Checked,landscape=false;
int count=0,cardsOnNormal,cardsOnLandscape=0,totalPages;
PrintTemplate template=GetSelectedTemplate();
PrintElement myElement,example;
btn_print.Enabled=false;
Application.DoEvents();
pagesToBePrinted.Clear();
example=GetExampleDistrict();
bitmap=example.GetBitmap(template);
cardSize=bitmap.Size;
if(allowMoreOnSamePage)
{
pageSizeNormal=new Size(Convert.ToInt32((pageSettings.PaperSize.Width/100f)*bitmap.VerticalResolution),Convert.ToInt32((pageSettings.PaperSize.Height/100f)*bitmap.VerticalResolution));
pageSizeLandscape=new Size(Convert.ToInt32((pageSettings.PaperSize.Height/100f)*bitmap.VerticalResolution),Convert.ToInt32((pageSettings.PaperSize.Width/100f)*bitmap.VerticalResolution));
gridNormal=new Size(pageSizeNormal.Width/cardSize.Width,pageSizeNormal.Height/cardSize.Height);
cardsOnNormal=gridNormal.Width*gridNormal.Height;
gridLandscape=new Size(pageSizeLandscape.Width/cardSize.Width,pageSizeLandscape.Height/cardSize.Height);
cardsOnLandscape=gridLandscape.Width*gridLandscape.Height;
if(cardsOnLandscape>cardsOnNormal)
{
totalPages=Convert.ToInt32(((float)parent.printqueue.Count/cardsOnLandscape)+0.49999);
landscape=true;
gridToUse=gridLandscape;
page=new Bitmap(pageSizeLandscape.Width,pageSizeLandscape.Height);
}
else if(cardsOnNormal>0)
{
totalPages=Convert.ToInt32(((float)parent.printqueue.Count/cardsOnNormal)+0.49999);
gridToUse=gridNormal;
page=new Bitmap(pageSizeNormal.Width,pageSizeNormal.Height);
}
else
{
MessageBox.Show("Den valgte skabelon er større en den valgte papirstørrelse. Der skal være plads til minimum 1 udskrift på hvert papir.");
btn_print.Enabled=true;
return;
}
}
else
{
totalPages=parent.printqueue.Count;
gridNormal=new Size(1,1);
gridToUse=gridNormal;
page=new Bitmap(Convert.ToInt32((pageSettings.PaperSize.Width/100)*bitmap.VerticalResolution),Convert.ToInt32((pageSettings.PaperSize.Height/100)*bitmap.VerticalResolution));
}
page.SetResolution(bitmap.VerticalResolution,bitmap.HorizontalResolution);
pageSettings.Landscape=landscape;
pageSettings.Color=radio_color.Checked;
//page=new Bitmap(pageSettings.PaperSize.Width,pageSettings.PaperSize.Height);
count=0;
for(int pagecount=0;pagecount<totalPages;pagecount++)
{
//clear page
myGfx=Graphics.FromImage(page);
myGfx.FillRectangle(Brushes.White,0,0,page.Width,page.Height);
for(int x=0;x<gridToUse.Width;x++)
{
for(int y=0;y<gridToUse.Height;y++)
{
myElement=parent.printqueue[count];
bitmap=myElement.GetBitmap(template);
myGfx.DrawImageUnscaled(bitmap,bitmap.Width*x,bitmap.Height*y,bitmap.Width,bitmap.Height);
count++;
if(count==parent.printqueue.Count)
{
y=gridToUse.Height;
x=gridToUse.Width;
}
}
}
//page.Save(Application.StartupPath+"\\data\\page"+pagecount+".tif",System.Drawing.Imaging.ImageFormat.Tiff);
pagesToBePrinted.Add(page.Clone());
}
printDocument1.DefaultPageSettings=pageSettings;
printpageCount=0;
printDocument1.Print();
btn_print.Enabled=true;
this.Hide();
parent.PrintEditChange += "P";
parent.Infoupdate();
parent.Focus();
}