using System;
using System.Drawing;
namespace DPExample
{
public abstract class PersonBuilder
{
protected Graphics g;
protected Pen p;
public PersonBuilder(Graphics g, Pen p)
{
this.g = g;
this.p = p;
}
public abstract void BuildHead();
public abstract void BuildBody();
public abstract void BuildArmLeft();
public abstract void BuildArmRight();
public abstract void BuildLegLeft();
public abstract void BuildLegRight();
}
class PersonThinBuilder : PersonBuilder
{
public PersonThinBuilder(Graphics g, Pen p) : base(g, p)
{
}
public override void BuildHead()
{
g.DrawEllipse(p, 50, 20, 30, 30);
}
public override void BuildBody()
{
g.DrawRectangle(p, 60, 50, 10, 50);
}
public override void BuildArmLeft()
{
g.DrawLine (p, 60, 50, 40, 100);
}
public override void BuildArmRight ()
{
g.DrawLine (p, 70, 60, 90, 100);
}
public override void BuildLegLeft()
{
g.DrawLine (p, 60, 100, 45, 150);
}
public override void BuildLegRight()
{
g.DrawLine (p, 70, 100, 85, 150);
}
}
class PersonFatBuilder : PersonBuilder
{
public PersonFatBuilder(Graphics g, Pen p) : base(g, p)
{
}
public override void BuildHead()
{
g.DrawEllipse(p, 50, 20, 30, 30);
}
public override void BuildBody()
{
g.DrawRectangle(p, 45, 50, 40, 50);
}
public override void BuildArmLeft()
{
g.DrawLine (p, 50, 50, 30, 100);
}
public override void BuildArmRight ()
{
g.DrawLine (p, 80, 50, 30, 100);
}
public override void BuildLegLeft()
{
g.DrawLine (p, 60, 100, 45, 150);
}
public override void BuildLegRight()
{
g.DrawLine (p, 70, 100, 85, 150);
}
}
class PersonDirector
{
private PersonBuilder pb;
public PersonDirector(PersonBuilder pb)
{
this.pb = pb;
}
public void CreatePerson()
{
pb.BuildHead();
pb.BuildBody ();
pb.BuildArmLeft();
pb.BuildArmRight ();
pb.BuildLegLeft();
pb.BuildLegRight();
}
}
}
原文網址: http://www.cnblogs.com/haibindev/archive/2011/12/21/2296173.html 原文作者: haibindev 原文標題:c#万能视频播放器 本文的重點在於修正 class VlcPlayer,使其能順利在 VC# Express 2010 .Net Framework 4 下順利編譯。 修正重點在於 CallingConvention = CallingConvention. StdCall 改成 CallingConvention = CallingConvention. Cdecl using System; using System.Runtime.InteropServices; using System.Security; using System.Text; namespace VlcDotNet { class VlcPlayer { private IntPtr libvlc_instance_; private IntPtr libvlc_media_player_; private double duration_; public VlcPlayer(string pluginPath) { string plugin_arg = "--plugin-path=" + pluginPath; string[] arguments = { "-I", "dummy", "--ignore-config", "--no-video-title", plugin_arg }; libvlc_instance_ = LibVlcAPI.libvlc_new(arguments); libvlc_media_player_ = LibVlcAPI.libvlc_media_player_new(libvlc_instance_); } public ...


留言
張貼留言