Премини към съдържанието
speceffect

Информация за част от код на C#ч

Препоръчан отговор


   Използвам код, намерен в някакъв форум, за да наслагвам снимки. Кодът работи. Интересува ме, обаче, чисто теоритично как функционира.

Ето кодът:

 
    Bitmap source1 = new Bitmap("А.jpg");
    Bitmap source2 = new Bitmap("B.png");
   
    var target = new Bitmap(source1.Width, source1.Height, PixelFormat.Format32bppArgb);
    var graphics = Graphics.FromImage(target);
 
   graphics.DrawImage(source1, 0, 0);
   graphics.DrawImage(source2, 0, 0);

   target.Save("C.jpg", ImageFormat.Jpeg); 

 

  Виждам, че се създават два обекта от клас Bitmap.(source1 и source2), виждам и извикване на метод DrawImage, най-вероятно от клас Graphics. 

 

  Какво правят, обаче, тези два реда:

 

    var target = new Bitmap(source1.Width, source1.Height, PixelFormat.Format32bppArgb);

    var graphics = Graphics.FromImage(target);
 
 
   И защо се използва var?
   Доколкото видях документацията на клас Bitmap, това отговаря на подаване на параметри към един от конструкторите на класа. Но очаквах, че вместо var, там ще е Graphics.
 
  Това graphics някаква референция към Graphics ли е?
 
  Ако някой може да обясни чисто теоритичната част на кода, ще съм много благодарен.
Редактирано от speceffect (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

 

   Използвам код, намерен в някакъв форум, за да наслагвам снимки. Кодът работи. Интересува ме, обаче, чисто теоритично как функционира.

Ето кодът:

 
    Bitmap source1 = new Bitmap("А.jpg");
    Bitmap source2 = new Bitmap("B.png");
   
    var target = new Bitmap(source1.Width, source1.Height, PixelFormat.Format32bppArgb);
    var graphics = Graphics.FromImage(target);
 
   graphics.DrawImage(source1, 0, 0);
   graphics.DrawImage(source2, 0, 0);

   target.Save("C.jpg", ImageFormat.Jpeg); 

 

  Виждам, че се създават два обекта от клас Bitmap.(source1 и source2), виждам и извикване на метод DrawImage, най-вероятно от клас Graphics. 

 

  Какво правят, обаче, тези два реда:

 

    var target = new Bitmap(source1.Width, source1.Height, PixelFormat.Format32bppArgb);

    var graphics = Graphics.FromImage(target);
 
 
   И защо се използва var?
  Това graphics някаква референция към Graphics ли е?
 
  Ако някой може да обясни чисто теоритичната част на кода, ще съм много благодарен.

 

първото създава обект target с размерите на source1 32битов с RGB цветно пространство

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

първото създава обект target с размерите на source1 32битов с RGB цветно пространство

Но защо го създава с var?  Очаквах да бъде:

 

Bitmap target = new Bitmap(source1.Width, source1.Height, PixelFormat.Format32bppArgb);

 

И какво прави второто?

Редактирано от speceffect (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Но защо го създава с var?  Очаквах да бъде:

 

Bitmap target = new Bitmap(source1.Width, source1.Height, PixelFormat.Format32bppArgb);

 

И какво прави второто?

(от обща идея за нещата) защото това е променлива, в нея ще с е смесят двете изображения, докато source1 и 2 играят ролята на константи (променливи само за четене)

Но моля изчакайте някой от колегите, който се занимава активно с програмиране, защото е възможно да пиша недомислици :)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Здравейте, 

 

Може би това ще Ви помогне повече като обяснение за типа var.

Поне според написаното, това представялява implicit данна (т.е. все едно декларирате, че това ще е "нещо", като реалния му тип му ще се определи от компилатора).

 

 

Beginning in Visual C# 3.0, variables that are declared at method scope can have an implicit type var. An implicitly typed local variable is strongly typed just as if you had declared the type yourself, but the compiler determines the type. The following two declarations of i are functionally equivalent:

 
 
var i = 10; // implicitly typed
int i = 10; //explicitly typed

 

Мисля, че цитирания линк ще изясни нещата.

 

Поздрави !

Редактирано от soundtracker (преглед на промените)

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

(от обща идея за нещата) защото това е променлива, в нея ще с е смесят двете изображения, докато source1 и 2 играят ролята на константи (променливи само за четене)

Но моля изчакайте някой от колегите, който се занимава активно с програмиране, защото е възможно да пиша недомислици :)

 

 Очевидно е, че е правилен начинът. Само искам да установя защо е така(не обичам и не мога да работя с нещо, ако не съм видял откъде и защо идва).

 Връзка към някакво обяснение в MSDN ще ми е от голяма полза. 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

 Очевидно е, че е правилен начинът. Само искам да установя защо е така(не обичам и не мога да работя с нещо, ако не съм видял откъде и защо идва).

 Връзка към някакво обяснение в MSDN ще ми е от голяма полза. 

Въобще не разбирам от програмиране:

Create from an Image Object 

Първия var ви дефинира target, втория ви дефинира че ще ползвате изображения от target.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Подаднах на едно обяснение  тук: http://msdn.microsoft.com/en-us/library/bb397696.aspx, свързано с анонимни типове. Това ли е същността?

Редактирано от speceffect (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Подаднах на едно обяснение  тук: http://msdn.microsoft.com/en-us/library/bb397696.aspx, свързано с анонимни типове. Това ли е същността?

По-горе ви дадоха професионално обяснение:

 

Здравейте, 

 

Може би това ще Ви помогне повече като обяснение за типа var.

Поне според написаното, това представялява implicit тип данна (т.е. все едно декларирате, че това ще е "нещо", като реалния му тип му ще се определи от компилатора).

 

Мисля, че цитирания линк ще изясни нещата.

 

Поздрави !

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

  Т.е. да разбирам, че това, което е дадено за var за локални променливи, важи и за обекти?

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.