//--------------------------------------------------------------------------- //-------- 2003. 11. 12 Made by Maxleo21c(»óÈÆ) -----------// //-------- »öÁ¤¸® Ãʱ⠴ܰè Blur¸¦ ÁÖ±â À§ÇÑ ºÎºÐ -----------// #include #pragma hdrstop #include "MainImage.h" #include "blurControl_F.h" #include "TPStretchImage.h" #include "NewGrouping_F.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "TPStretchImage" #pragma link "RzButton" #pragma resource "*.dfm" //--------------------------------------------------------------------------- #define IDS_BLURAUTO StringTable[0] #define IDS_BLUROK StringTable[1] #define IDS_BLURCANCEL StringTable[2] //--------------------------------------------------------------------------- TblurControlForm *blurControlForm; //--------------------------------------------------------------------------- __fastcall TblurControlForm::TblurControlForm(TComponent* Owner) : TForm(Owner) { //=================================================================== StringTable.Create(DirectoryItem, Language, "BlurForm"); SetSmallFont(Font); AutoBitBtn->Caption = IDS_BLURAUTO; OKBitBtn->Caption = IDS_BLUROK; cancleBtn->Caption = IDS_BLURCANCEL; //=================================================================== track_num=5; // ÃʱⰪ=5 (trackBar°¡ 5·Î ÃʱâÈ­ µÇ¾îÀֱ⠶§¹®) blur_OKBtn=false; TrackBarMoved=false; } //--------------------------------------------------------------------------- //À̹ÌÁö¸¦ ÃʱâÈ­ ÇÏ´Â ÇÔ¼ö //TblurControlForm¿¡¼­´Â TexpiaBitmapÀ» »ç¿ëÇϱ⠶§¹®¿¡ TNewGroupingForm¿¡ ÀÖ´Â //À̹ÌÁö¸¦ Union -> Texpia·Î ¹Ù²ãÁÖ´Â ºÎºÐ void __fastcall initImage(TUnionBitmap *originalBitmap, TUnionBitmap *previewBitmap) { blurControlForm->originImage->Bitmap->Create(previewBitmap->Width, previewBitmap->Height, previewBitmap->BitsPerPixel, previewBitmap->RGB); blurControlForm->afterImage->Bitmap->Create(previewBitmap->Width, previewBitmap->Height, previewBitmap->BitsPerPixel, previewBitmap->RGB); // ÇöÀç ¿øº»À» ±âº»À¸·Î Ç×»ó °¡Àú¿Àµµ·Ï º¯°æÇÑ »óÅÂÀÌ´Ù. previewBitmap->CopyToTexpia(blurControlForm->originImage->Bitmap, 0, 0, previewBitmap->Width, previewBitmap->Height, 0, 0, SRCCOPY); previewBitmap->CopyToTexpia(blurControlForm->afterImage->Bitmap, 0, 0, previewBitmap->Width, previewBitmap->Height, 0, 0, SRCCOPY); // Image Size¸¦ °è»êÇϱâ À§ÇÑ ÇÔ¼ö È£Ãâ blurControlForm->RatioCalculate(previewBitmap); } //--------------------------------------------------------------------------- // ¾ð»þÇÂÀ» ÇÏ¿© ºí·¯ÀÇ È¿°ú¸¦ ³ªÅ¸³»´Â ÇÔ¼ö // Leadtools13¿¡ ÀÖ´Â UnsharpenÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿´´Ù. void __fastcall TblurControlForm::blurProcess(TTexpiaBitmap *previewBitmap, int num) { TCursor cur; cur = Screen->Cursor; Screen->Cursor = crHourGlass; /* This example loads a bitmap and increases its sharpness. */ BITMAPHANDLE *LeadBitmap; /* Bitmap handle to hold the loaded image. */ LeadBitmap=previewBitmap->Handle; /* Increase the sharpness by 25 percent of the possible range */ L_SharpenBitmap(LeadBitmap, num ); afterImage->Repaint(); Screen->Cursor = cur; } //--------------------------------------------------------------------------- // ±âº»À» 5·Î ³õ¾Ò±â ¶§¹®¿¡ ¿ÀÅ並 ´­·¶À» °æ¿ì 2¸¸Å­ À̵¿ÇÏ´Ù. void __fastcall TblurControlForm::AutoBitBtnClick(TObject *Sender) { controlTrackBar->Position=7; } //--------------------------------------------------------------------------- // Trackbar¸¦ ¿Å±æ¶§ track Number¸¦ °¡Áö°í 1000¸¸Å­¾¿ ºí·¯ È¿°ú¸¦ ³Ö´Â´Ù(Unsharpen). // +800Àº »þÇÂÀ» ÁÖ´Â ºÎºÐÀÌ´Ù. -1000À» Çϸé ÇÑ ´Ü°è¿¡¼­ Å©°Ô »þÇÂÀÌ µé¾î°¡¼­ ³·Ãß¾ú´Ù. void __fastcall TblurControlForm::controlTrackBarChange(TObject *Sender) { int check=0; check = controlTrackBar->Position - track_num; TrackBarMoved = true; if (check > 0) { for (int i=0; iBitmap, -1000 ); track_num=controlTrackBar->Position; } else if (check < 0) { for (int j=0; j<(-check); j++) blurProcess(afterImage->Bitmap, 800 ); track_num=controlTrackBar->Position; } } //--------------------------------------------------------------------------- // Æ®·¢¹Ù°¡ ¿òÁ÷ÀÌÁö ¾Ê¾ÒÀ» °æ¿ì ¹«½ÃÇϵµ·Ï Çϱâ À§Çؼ­ ó¸®Çß´Ù. void __fastcall TblurControlForm::OKBitBtnClick(TObject *Sender) { if (TrackBarMoved) blur_OKBtn = true; else blur_OKBtn = false; Close(); } //--------------------------------------------------------------------------- // Image Size¸¦ Á¶ÀýÇÏ´Â ÇÔ¼ö // FullView¿¡¼­ CopyÇÑ ºÎºÐ // ÃßÈÄ ¾÷±×·¹À̵å : ¹Ì¸®º¸±â¿¡¼­ ÁÜ ±â´ÉÀ» Ãß°¡ÇؾßÇÑ´Ù. À̶§ À̺κÐÀ» ¼Õº¸¸é µÉ°Í °°´Ù. void __fastcall TblurControlForm::RatioCalculate(TUnionBitmap *previewBitmap) { int width = previewBitmap->Width; int height = previewBitmap->Height; if (previewBitmap) { ratio = 1; if (Panel1->Width-10Height-10Width-10>=width/ratio && Panel1->Height-10>=height/ratio) { break; } ratio++; } bRatio = false; } else { while (true) { if (Panel1->Width-10Height-10SetZoom(ratio, 1); originImage->Width = width*ratio; originImage->Height = height*ratio; afterImage->SetZoom(ratio, 1); afterImage->Width = width*ratio; afterImage->Height = height*ratio; } else { originImage->SetZoom(1, ratio); originImage->Width = width/ratio; originImage->Height = height/ratio; afterImage->SetZoom(1, ratio); afterImage->Width = width/ratio; afterImage->Height = height/ratio; } if (previewBitmap->CoordinateSystem==csTopLeft) { originImage->Top = 2; afterImage->Top = 2; } else { originImage->Top = Panel1->Height-originImage->Height-2; afterImage->Top = Panel2->Height-afterImage->Height-2; } } } //--------------------------------------------------------------------------- void __fastcall TblurControlForm::cancleBtnClick(TObject *Sender) { blur_OKBtn = false; Close(); } //--------------------------------------------------------------------------- void __fastcall TblurControlForm::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if(Key == 'A'){ //'a' or 'A' int Ratio = 0; Key = 0; switch (originImage->ZoomIn) { //ÇöÀçÀÇ È®´ë, Ãà¼ÒµÈ ºñÀ²Àº ¾Ë¾Æ³»¾î case 1: switch (originImage->ZoomOut) { // ºñÀ²¿¡ µû¶ó ratio¶ó´Â º¯¼ö¿¡ Àû´çÇÑ °ªÀ» case 1: Ratio = 302; break; // ÀԷ½Ã۰í, ±×°ÍÀº parameter·Î ÇÏ´Â ÇÔ¼ö(RatioZoom) case 2: Ratio = 203; break; // ¸¦ È£ÃâÇÑ´Ù. case 3: Ratio = 102; break; case 4: Ratio = 103; break; // ¼öÁ¤ By GreenFish (Áܴܰè È®Àå) case 6: Ratio = 104; break; case 8: Ratio = 106; break; case 12: Ratio = 108; break; case 16: Ratio = 112; break; } break; case 2: switch (originImage->ZoomOut) { case 1: Ratio = 301; break; case 3: Ratio = 101; break; } break; case 3: switch (originImage->ZoomOut) { case 1: Ratio = 401; break; case 2: Ratio = 201; break; } break; case 4: Ratio = 601; break; case 6: Ratio = 801; break; case 8: Ratio = 1201; break; case 12: Ratio = 1601; break; default: return; } RatioZoom(Ratio); } else if(Key == 'S'){ // 's' or 'S' int Ratio = 0; Key = 0; switch (originImage->ZoomIn) { case 1: switch (originImage->ZoomOut) { case 1: Ratio = 203 ; break; case 2: Ratio = 103; break; case 3: Ratio = 104; break; case 4: Ratio = 106; break; case 6: Ratio = 108; break; case 8: Ratio = 112; break; case 12: Ratio = 116; break; default: return; } break; case 2: switch (originImage->ZoomOut) { case 1: Ratio = 302; break; case 3: Ratio = 102; break; } break; case 3: switch (originImage->ZoomOut) { case 1: Ratio = 201; break; case 2: Ratio = 101; break; } break; case 4: Ratio = 301; break; case 6: Ratio = 401; break; case 8: Ratio = 601; break; case 12 : Ratio = 801; break; case 16 : Ratio = 1201; break; default: return; } RatioZoom(Ratio); } } //--------------------------------------------------------------------------- void __fastcall TblurControlForm::RatioZoom(int r) //by qe and GreenFish { int a, b; a = r / 100; b = r % 100; ZoomChange(a, b); } //--------------------------------------------------------------------------- void __fastcall TblurControlForm::ZoomChange(int zi, int zo) { POINT ptClient; POINT ptClient_A; String sbZoom; if (zi!=originImage->ZoomIn || zo!=originImage->ZoomOut) { originImage->SetZoom(zi, zo); afterImage->SetZoom(zi, zo); } } //---------------------------------------------------------------------------