如何把列印的結果存成影像檔(BMP) |
尚未結案
|
g6101
高階會員 發表:22 回覆:129 積分:110 註冊:2002-06-15 發送簡訊給我 |
|
海星
高階會員 發表:41 回覆:217 積分:106 註冊:2003-01-09 發送簡訊給我 |
Graphics::TBitmap *BMP; TQRUnit StoredUnits; QuickRep1->Prepare(); StoredUnits = QuickRep1->Units; QuickRep1->Units = Pixels; try { BMP = new Graphics::TBitmap(); for ( i =1 ; i <= QuickRep1->QRPrinter->PageCount; i ) { BMP->Width = QuickRep1->Page->Width; BMP->Height = QuickRep1->Page->Length; QuickRep1->QRPrinter->PageNumber = i; BMP->Canvas->Draw (0, 0, QuickRep1->QRPrinter->Page ); } } __finally { delete BMP; PrintQuotationQR->QuickRep1->Units = StoredUnits; } |
CuteBabyBoy
初階會員 發表:18 回覆:97 積分:48 註冊:2003-07-11 發送簡訊給我 |
|
g6101
高階會員 發表:22 回覆:129 積分:110 註冊:2002-06-15 發送簡訊給我 |
感謝海星、CuteBabyBoy 大大所提供的方法及意見: (一)我依照海星您所提供方法經小弟測試結果發現,TQuickRep元件所能生成影像是Preview用的解析度很低,不符合我的需求(歹勢,我並沒有把需求給講清楚,害您白忙一場,600dpi以上解析度才能夠用於排版用途),或許有其他方法可以取出高解析度影像,不過小弟納悶的是既然有低解析度,何以沒有高解度的影像?一定是我的方法不對,還請大大解惑! (二)我採納CuteBabyBoy大大意見,直接用TImage元件成生簡單的排列組合,並將程式碼貼上,供各位參考看看,還有沒有更好的方法: LOGFONT LogFont; TPrinter *print = Printer(); //================================= void __fastcall TForm1::Button1Click(TObject *Sender) { char *str = "倚天屠龍,誰與爭鋒。"; char ss[3]; int len = strlen(str); int x,y=0; //設定影像高/寬(從印表機(A4)紙張取得,單位Pixel) Image1->Picture->Bitmap->Width = print->PageWidth; Image1->Picture->Bitmap->Height = print->PageHeight; //設定拷貝影像的尺寸 TRect MyRect = Rect(0,0,Image1->Picture->Bitmap->Width,Image1->Picture->Bitmap->Height); //設定排列字體解析度(從印表機取得) Image1->Picture->Bitmap->Canvas->Font->PixelsPerInch = GetDeviceCaps(print->Handle,LOGPIXELSX); Image1->Picture->Bitmap->Canvas->Font->Name = "標楷體"; //字體 Image1->Picture->Bitmap->Canvas->Font->Size = 72; //大小 GetObject(Image1->Picture->Bitmap->Canvas->Font->Handle,sizeof(LOGFONT),&LogFont); LogFont.lfEscapement = 0; //旋轉度 LogFont.lfOutPrecision = OUT_TT_ONLY_PRECIS; //品質 Image1->Picture->Bitmap->Canvas->Font->Handle = CreateFontIndirect(&LogFont); Image1->Picture->Bitmap->Canvas->Brush->Style = bsClear; //以直式排列文字 x = Image1->Picture->Bitmap->Width; for (int i=0;i < len ;i = 2) { //memset(ss,0,sizeof(ss)); ss[0] = str[i]; ss[1] = str[i 1]; Image1->Picture->Bitmap->Canvas->TextOut(x - Image1->Picture->Bitmap->Canvas->TextWidth("ss"),y,ss); y = Image1->Picture->Bitmap->Canvas->TextHeight(ss); } print->BeginDoc(); //將影像拷貝到印表機 print->Canvas->CopyRect(MyRect,Image1->Picture->Bitmap->Canvas,MyRect); print->EndDoc(); } //存成影像檔的動作省略 //以上扺做文字的排列組合,實際上還要排上表格、圖表、影像..等等的組合 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |