internal static void ImageRotated(IntPtr texId, Vector2 center, Vector2 size, float angle, Vector2 uv, Vector2 uv1, ImDrawListPtr drawList) { var cosA = MathF.Cos(angle); var sinA = MathF.Sin(angle); drawList.AddImageQuad( texId, center + Util.Rotate(new Vector2(-size.X * 0.5f, -size.Y * 0.5f), cosA, sinA), center + Util.Rotate(new Vector2(+size.X * 0.5f, -size.Y * 0.5f), cosA, sinA), center + Util.Rotate(new Vector2(+size.X * 0.5f, +size.Y * 0.5f), cosA, sinA), center + Util.Rotate(new Vector2(-size.X * 0.5f, +size.Y * 0.5f), cosA, sinA), new Vector2(uv.X, uv.Y), new Vector2(uv1.X, uv.Y), new Vector2(uv1.X, uv1.Y), new Vector2(uv.X, uv1.Y) ); }
public static void ImageRotated(ImDrawListPtr d, IntPtr tex_id, Vector2 position, Vector2 size, float angle, uint col = UInt32.MaxValue) { float cos_a = (float)Math.Cos(angle); float sin_a = (float)Math.Sin(angle); Vector2[] pos = { position + ImRotate(new Vector2(-size.X * 0.5f, -size.Y * 0.5f), cos_a, sin_a), position + ImRotate(new Vector2(+size.X * 0.5f, -size.Y * 0.5f), cos_a, sin_a), position + ImRotate(new Vector2(+size.X * 0.5f, +size.Y * 0.5f), cos_a, sin_a), position + ImRotate(new Vector2(-size.X * 0.5f, +size.Y * 0.5f), cos_a, sin_a) }; Vector2[] uvs = { new Vector2(0.0f, 0.0f), new Vector2(1.0f, 0.0f), new Vector2(1.0f, 1.0f), new Vector2(0.0f, 1.0f) }; d.AddImageQuad(tex_id, pos[0], pos[1], pos[2], pos[3], uvs[0], uvs[1], uvs[2], uvs[3], col); }