Can I use IDisposable by treating abstract concepts such as colors as resources? There are the following class:

class ConsoleForegroundColor : IDisposable
{
    public ConsoleForegroundColor(ConsoleColor color)
    {
        OriginalColor = Console.ForegroundColor;
        Console.ForegroundColor = color;
    }

    public ConsoleColor OriginalColor { get; set; }

    public void Dispose()
    {
        Console.ForegroundColor = OriginalColor;
    }
}


This has the following uses:

Console.WriteLine("display with default color");
using (new ConsoleForegroundColor(ConsoleColor.Green))
{
    Console.WriteLine("display with green");
}
Console.WriteLine("display with default color");


This source code changes the console font color to the specified color when creating an instance and restores it when discarded.

I think it's possible to think of the colors drawn on the console as resources, so I don't think it's so different from the original use of IDisposable. Is the use of IDisposable like this source code a source that is difficult to understand and maintain? If you have a better think, please tell me.
Readability-wise, this is fine, though I prefer ConsoleForegroundBrush, because it keeps the theme of Drawing library, which is well known, and in the real world, you can definitely destroy/dispose brushes / put them down, but disposing an actual colour would be like... changing the color of the text back to black?

The main issue is there is a performance impact that comes with using, as this is really a try/finally block under the hood, and so you are adding try/finally around your code which may slow things down unnecessarily, particularly if there's other non-console logic in the using block. 

The using block can also sometimes hide other errors, because it's a try/finally block. If you put a using block inside a try() block and your dispose method of the ConsoleForegroundColour class throws an exception (such as if the Console became null somehow), you will probably only see the Dispose() exception, and not the other exception. This situation is highly unlikely to happen in your class though.