コード例 #1
0
    private void CreateUpscaledPreviewTexture()
    {
        var scaler      = new xBRZNet.xBRZScaler();
        var whitedImage = new Bitmap(Image.Width, Image.Height);

        for (var y = 0; y < Image.Height; y++)
        {
            for (var x = 0; x < Image.Width; x++)
            {
                var col = Image.GetPixel(x, y);
                if (col.A == 0)
                {
                    whitedImage.SetPixel(x, y, System.Drawing.Color.FromArgb(255, 255, 255));
                }
                else
                {
                    whitedImage.SetPixel(x, y, col);
                }
            }
        }
        var scaledImage = scaler.ScaleImage(whitedImage, 4, null);

        whitedImage.Dispose();
        var texture = new Texture2D(scaledImage.Width, scaledImage.Height, TextureFormat.RGB24, false);

        for (int y = 0; y < texture.width; y++)
        {
            for (int x = 0; x < texture.height; x++)
            {
                var col = scaledImage.GetPixel(x, y);
                if (col.A == 0)
                {
                    texture.SetPixel(x, texture.height - y, new Color(1f, 1f, 1f, 1f));
                }
                else
                {
                    texture.SetPixel(x, texture.height - y, new Color(((float)col.R) / 255f, ((float)col.G) / 255f, ((float)col.B) / 255f, ((float)col.A) / 255f));
                }
            }
        }
        texture.Apply();
        _UpscaledPreviewTexture = texture;
    }