첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;

#region RenderTargetBitmap 객체 구하기 - GetRenderTargetBitmap(mediaPlayer, dpiX, dpiY, pixelFormat)

/// <summary>
/// RenderTargetBitmap 객체 구하기
/// </summary>
/// <param name="mediaPlayer">미디어 플레이어</param>
/// <param name="dpiX">DPI X</param>
/// <param name="dpiY">DPI Y</param>
/// <param name="pixelFormat">픽셀 포맷</param>
/// <returns>비트맵</returns>
public RenderTargetBitmap GetRenderTargetBitmap
(
    MediaPlayer mediaPlayer,
    double      dpiX,
    double      dpiY,
    PixelFormat pixelFormat
)
{
    double width  = CalculateDeviceIndependentUnitCount(mediaPlayer.NaturalVideoWidth , dpiX);
    double height = CalculateDeviceIndependentUnitCount(mediaPlayer.NaturalVideoHeight, dpiY);

    RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap
    (
        mediaPlayer.NaturalVideoWidth,
        mediaPlayer.NaturalVideoHeight,
        dpiX,
        dpiY,
        pixelFormat
    );

    DrawingVisual drawingVisual = new DrawingVisual();

    DrawingContext drawingContext = drawingVisual.RenderOpen();  

    drawingContext.DrawVideo(mediaPlayer, new Rect(0, 0, width, height));

    drawingContext.Close();

    renderTargetBitmap.Render(drawingVisual);

    return renderTargetBitmap;
}

#endregion
#region 장치 독립적 단위 수 구하기 - GetDeviceIndependentUnitCount(pixelCount, dpi)

/// <summary>
/// 장치 독립적 단위 수 구하기
/// </summary>
/// <param name="pixelCount">픽셀 수</param>
/// <param name="dpi">DPI</param>
/// <returns>장치 독립적 단위 수</returns>
private double GetDeviceIndependentUnitCount(double pixelCount, double dpi)
{
    return pixelCount / dpi * 96d;
}

#endregion
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요