Newer
Older
DungeonShooting / DungeonShooting_Godot / src / test / TestOptimizeSprite.cs
@小李xl 小李xl on 17 Jun 2023 2 KB 测试绘图
using System;
using Godot;

public partial class TestOptimizeSprite : Node2D
{
    [Export()] public Texture2D Texture2D;

    public override void _Ready()
    {
        var imageCanvas = new ImageCanvas(200, 200);
        imageCanvas.Scale = new Vector2(4, 4);
        imageCanvas.DrawImageInCanvas(Texture2D, 10, 30, 0, 0, 0, false);
        var time = DateTime.Now;
        //imageCanvas.DrawImageInCanvas(Texture2D, 50, 30, 30, 0, 0, true);
        GD.Print("useTime: " + (DateTime.Now - time).TotalMilliseconds);
        var time2 = DateTime.Now;
        //imageCanvas.DrawImageInCanvas(Texture2D, 100, 100, 0, 0, 0, false);
        //imageCanvas.DrawImageInCanvas(Texture2D, 100, 100, 90, Texture2D.GetWidth() / 2, Texture2D.GetHeight() / 2, false);
        imageCanvas.DrawImageInCanvas(Texture2D, 100, 100, 300, 0, 0, false);
        //imageCanvas.DrawImageInCanvas(Texture2D, 100, 100, 145, (int)(Texture2D.GetWidth() * 0.2f), (int)(Texture2D.GetHeight() * 0.2f), false);
        //imageCanvas.DrawImageInCanvas(Texture2D, 140, 30, 270, 0, 0, true);

        GD.Print("useTime: " + (DateTime.Now - time2).TotalMilliseconds);
        AddChild(imageCanvas);
    }

    private void Test1()
    {
        var canvas = Image.Create(150, 150, false, Image.Format.Rgba8);

        for (int x = 0; x < 150; x++)
        {
            for (int y = 0; y < 150; y++)
            {
                canvas.SetPixel(x, y, Colors.Gray);
            }
        }

        var image = Texture2D.GetImage();
        image.FlipX();
        image.Rotate180();
        canvas.BlitRect(image, new Rect2I(0, 0, image.GetWidth(), image.GetHeight()), new Vector2I(10, 10));
        //RotateImage(image, canvas, 50, 50, 30, image.GetWidth(), image.GetHeight());

        //RotateImage(imgData, image, 0);

        for (int i = 0; i < canvas.GetWidth(); i++)
        {
            canvas.SetPixel(i, 50, Colors.Black);
            canvas.SetPixel(i, 50 + image.GetHeight() / 2, Colors.Green);
        }

        for (int i = 0; i < canvas.GetHeight(); i++)
        {
            canvas.SetPixel(50, i, Colors.Black);
            canvas.SetPixel(50 + image.GetWidth() / 2, i, Colors.Green);
        }

        var imageTexture = ImageTexture.CreateFromImage(canvas);
        var sprite2D = new Sprite2D();
        sprite2D.Texture = imageTexture;
        sprite2D.Position = new Vector2(900, 500);
        sprite2D.Scale = new Vector2(5, 5);
        AddChild(sprite2D);
    }
}