PDA

View Full Version : مفهوم این کد؟



1485159
شنبه 22 آبان 1389, 14:53 عصر
سلام
قسمتی رو که با رنگ گرمز مشخص کردم رو نمیتونم درک بکنم که چی کار میکنه!!

/*
This example shows how to draw directly to a Bitmap. It
loads a bitmap from a file and then copies it to another
bitmap twice it's size. Then the two bitmaps are
displayed on the form canvas.
*/

#include <memory> //for STL auto_ptr class

void __fastcall TForm1::Button1Click(TObject *Sender)
{
std::auto_ptr<Graphics::TBitmap> Bitmap(new Graphics::TBitmap);
std::auto_ptr<Graphics::TBitmap> BigBitmap(new Graphics::TBitmap);
TRGBTriple *ptr, *bigPtr; // use a (byte *) for pf8bit color
TPixelFormat pixForm, bigpixForm;
try
{
Bitmap->LoadFromFile("../littlefac.bmp");
pixForm = Bitmap->PixelFormat;
bigpixForm = BigBitmap->PixelFormat;
Bitmap->PixelFormat = pf24bit;
BigBitmap->PixelFormat = pf24bit;
BigBitmap->Height = Bitmap->Height * 2;
BigBitmap->Width = Bitmap->Width * 2;
for (int y = 0; y < Bitmap->Height; y++)
{
ptr = reinterpret_cast<TRGBTriple *>(Bitmap->ScanLine[y]);
for (int x = 0; x < Bitmap->Width; x++)
{
int bx = x * 2;
int by = y * 2;
bigPtr = reinterpret_cast<TRGBTriple *>(BigBitmap->ScanLine[by]);
bigPtr[bx] = ptr[x];
bigPtr[bx + 1] = ptr[x];
bigPtr = reinterpret_cast<TRGBTriple *>(BigBitmap->ScanLine[by + 1]);
bigPtr[bx] = ptr[x];
bigPtr[bx + 1] = ptr[x];
}
}
Canvas->Draw(0, 0, Bitmap.get());
Canvas->Draw(200, 200, BigBitmap.get());
}
catch (...)
{
ShowMessage("Could not load or alter bitmap");
}
}

1485159
دوشنبه 01 آذر 1389, 14:02 عصر
کسی نیست؟(اینم دست کم 10 کاراکتر):لبخند: