Ответы пользователя по тегу .NET
  • Каким образом Unity связан с C# и .NET?

    @ColdSpirit
    Второй. Похоже что основа приложения на юнити - это запускающий наши скрипты экзешник, и библиотеки, к которым наши скрипты обращаются. К слову, скрипты наши вовсе не скрипты, а довольно уже скомпилированный и упакованный код. А управляет юнити всеми этими "скриптами" с помощью Mono, который тоже входит в билд.

    Вот например скрин из типичного билда на винде:
    a3ed6bfdf496d2a505aa89ab7114879a.pngНа пикче виден фирменный запускатор от юнити, библиотека для его работы в данной системе (для браузеров, например, Unity Player ставится как расширение), и game_Data - директория, которая включает прочие необходимые библиотеки (для физики и UI), ассеты, включая наши скрипты, а также библиотеки Mono.
    Ответ написан
    Комментировать
  • Как преобразовать изображение (imagick --> System.Drawing.Image) или альтернативы этому?

    @ColdSpirit Автор вопроса
    Решил данный вопрос таким способом:
    // load image from file
    System::Drawing::Bitmap^ imageCLI_RGB = gcnew System::Drawing::Bitmap^(L"Lena.jpg");
     
     // resize image for change RGB to RGBA values
    System::Drawing::Bitmap^ imageCLI_RGBA = gcnew System::Drawing::Bitmap(imageCLI_RGB, 640, 480);
    
    
     
     // lock the bitmap's bits. 
    System::Drawing::Rectangle rect = System::Drawing::Rectangle(0, 0, imageCLI_RGBA->Width, imageCLI_RGBA->Height);
    System::Drawing::Imaging::BitmapData^ bmpData = imageCLI_RGBA->LockBits(rect, System::Drawing::Imaging::ImageLockMode::ReadWrite, imageCLI_RGBA->PixelFormat);
    
     // get the address of the first line.
    System::IntPtr ptr = bmpData->Scan0;
    
     // declare an array to hold the bytes of the bitmap.
     // this code is specific to a bitmap with 24 bits per pixels.
    int bytes = System::Math::Abs(bmpData->Stride) * imageCLI_RGBA->Height;
    array<System::Byte>^ rgbValues = gcnew array<System::Byte>(bytes);
    
     // copy the RGBA values into the array.
    System::Runtime::InteropServices::Marshal::Copy(ptr, rgbValues, 0, bytes);
    
    
    
    /***** ALL MAGICK HERE *****/
    
     // RGBA contains CLI char array to simple char array
    pin_ptr<unsigned char> p = &rgbValues[0];
    unsigned char* rgbaTable = p;
    
     // add RGBA values to ImageMagick image
    Magick::Image* imageIM = new Magick::Image(imageCLI_RGBA->Width, imageCLI_RGBA->Height, "RGBA", Magick::CharPixel, rgbaTable);
    
     // blur image
    imageIM->gaussianBlur(3, 2);
    
     // copy values back to the RGBA array
    imageIM->write(0, 0, imageCLI_RGBA->Width, imageCLI_RGBA->Height, "RGBA", Magick::CharPixel, rgbaTable);
    delete imageIM;
    
    /***** END MAGICK *****/
    
    
    
     // copy array to image
    System::Runtime::InteropServices::Marshal::Copy(rgbValues, 0, ptr, bytes);
    
     // unlock the bits.
    imageCLI_RGBA->UnlockBits(bmpData);
    Ответ написан
    Комментировать