|
dll을 호출해서 폼사이즈를 바꾼다.. 간단하지여?
근데 그 간단한 것이 안되네여.~~
dll입니다. 좀 긴데.. 내용은 받은 파라메터로 이미지 사이즈를 변형해주는 겁니다..
extern "C" __declspec(dllexport) void __fastcall myResize(TObject *Sender, TImage *Im, int nw, int nh)
{
int w=Im->Picture->Bitmap->Width;
int h=Im->Picture->Bitmap->Height;
....//
Graphics::TBitmap *B = new Graphics::TBitmap();
B->Width=nw;
B->Height=nh;
B->PixelFormat=pf24bit;
for (int j=0;j<nh;j++)
{
curx=(double)j*ky;
downx=floor(curx);
upx=ceil(curx);
if (upx==h) upx--;
for (int i=0;i<nw;i++)
{
B->Canvas->Pixels[i][j]=(TColor)( (LineFunc(downx,Rt[i][downx],upx,Rt[i][upx],curx)) +
((LineFunc(downx,Gt[i][downx],upx,Gt[i][upx],curx))<<8) +
((LineFunc(downx,Bt[i][downx],upx,Bt[i][upx],curx))<<16));
}
}
Im->Picture->Bitmap->Assign(B);
for (int i = 0; i < w; i++) {
delete[] R1[i], delete[] G1[i], delete[] B1[i]; }
delete[] R1, delete[] G1, delete[] B1;
for (int i = 0; i < nw; i++) {
delete[] Rt[i], delete[] Gt[i], delete[] Bt[i]; }
delete[] Rt, delete[] Gt, delete[] Bt;
B->Free();
}
dll을 호출하는 부분입니다..
void __fastcall TWBMPForm::mmyResize(TObject *Sender, TImage *Im, int nw, int nh)
{
HINSTANCE DLLInstNewForm;
DLLInstNewForm = LoadLibrary("resize.dll");
if( DLLInstNewForm ) {
CreateNewForm = (void(__fastcall *)(TObject *Sender, TImage *Im, int nw, int nh))GetProcAddress(DLLInstNewForm, "myResize");
if( CreateNewForm ) {
CreateNewForm(WBMPForm, WBMPForm->Image1, CSpinEdit1->Value, CSpinEdit2->Value);
}
FreeLibrary(DLLInstNewForm);
}
else {
ShowMessage(SysErrorMessage(GetLastError()));
ShowMessage("Unable to load the DLL");
}
}
그리고 이 dll을 호출하는 mmyResize는 다른 폼에서 호출하고 있습니다..
dll 호출도 되는데.. 사이즈가 변하지 않습니다..
아마도 파라메타를 잘못 넘겨주지 싶은데..
아님.. 변환후 그 값을 못 돌려주던지..
어느 부분이 잘 못 되었는지.. 좀 알려줒세요.. 그럼 감사합니다..
|