Feedback

C# - Bild steht auf reflektierendem Grund

Veröffentlicht von am 19.12.2006
(2 Bewertungen)
Von vielen Apple-Programmen bekannt ist der Effekt, dass Bilder auf einem spiegelnden Grund stehen, der einen Teil des Bildes reflektiert. Die folgende Funktion erzeugt genau diesen Effekt.
GFU-Schulungen  [Anzeige]

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

/// <summary>
/// Lets appear a picture standing on a reflecting ground.
/// </summary>
/// <param name="source">Image to apply effect to</param>
/// <param name="height">Height of the reflection (percentage)</param>
/// <param name="startTransparency">
///     transparency the effect starts with
/// </param>
/// <param name="BackgroundColor">Color of the ground</param>
/// <returns>a bitmap with the desired effect</returns>
private Bitmap ReflectingGround(Image source, byte height, 
    byte startTransparency, Color BackgroundColor)
{
    // height needed for the shadow
    int shadowHeight = Convert.ToInt32(
        Convert.ToDouble(height) / 100 * source.Height);

    // create new bitmap for the generated picture
    Bitmap myBitmap = new Bitmap(source.Width, 
        source.Height + shadowHeight);

    Graphics myGraphics = Graphics.FromImage(myBitmap);

    // draw the source image
    myGraphics.DrawImage(source, 0, 0);

    // flip the source image and draw it below the source image
    Image flipped = (Image)source.Clone();
    flipped.RotateFlip(RotateFlipType.RotateNoneFlipY);

    myGraphics.DrawImage(flipped, 0, source.Height);

    // create gradient from semi-transparent to transparent over
    // the flipped copy
    Rectangle gradientRect = new Rectangle(0, source.Height, 
        source.Width, shadowHeight);

    // create brush
    System.Drawing.Drawing2D.LinearGradientBrush myBrush = 
        new System.Drawing.Drawing2D.LinearGradientBrush(
        gradientRect, 
        Color.FromArgb(startTransparency, BackgroundColor), 
        Color.FromArgb(255, BackgroundColor),
        System.Drawing.Drawing2D.LinearGradientMode.Vertical);

    // draw gradient
    myGraphics.FillRectangle(myBrush, gradientRect);

    // return created bitmap
    return myBitmap;
}
Abgelegt unter Bild, Reflexion, spiegelnd.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!