1: public partial class Window1 : Window
2: {
3: DispatcherTimer _timer = null;
4: double _rollTopLeft = 0;
5: double _imageWidth = 400;
6: double _imageHeight = 300;
7: double _offset = 3;
8: double _3DSize = 50;
9: public Window1()
10: {
11: InitializeComponent();
12: this.Loaded += new RoutedEventHandler(Window1_Loaded);
13: }
14: void Window1_Loaded(object sender, RoutedEventArgs e)
15: {
16: LinearGradientBrush maskBrush = new LinearGradientBrush();
17: maskBrush.StartPoint = new Point(0, 0);
18: maskBrush.EndPoint = new Point(0, 1);
19:
20: GradientStop BlackStop1 = new GradientStop(Color.FromArgb(30, 255, 255, 255), 0.0);
21: GradientStop BlackStop3 = new GradientStop(Colors.Black, 0.0);
22: GradientStop BlackStop4 = new GradientStop(Colors.Black, .9);
23: GradientStop transparentStop = new GradientStop(Color.FromArgb(175, 255, 255, 255), .5);
24: GradientStop BlackStop2 = new GradientStop(Color.FromArgb(100, 255, 255, 255), 1);
25:
26: maskBrush.GradientStops.Add(BlackStop1);
27: maskBrush.GradientStops.Add(transparentStop);
28: maskBrush.GradientStops.Add(BlackStop2);
29: maskBrush.GradientStops.Add(BlackStop3);
30: maskBrush.GradientStops.Add(BlackStop4);
31:
32: CanAni.OpacityMask = maskBrush;
33:
34: _timer = new DispatcherTimer();
35: _timer.Interval = TimeSpan.FromSeconds(.1);
36: _timer.Tick += new EventHandler(_timer_Tick);
37: _timer.IsEnabled = true;
38: }
39:
40: void _timer_Tick(object sender, EventArgs e)
41: {
42: Image im = new Image();
43: im.Width = _imageWidth;
44: im.Height = _imageHeight;
45: im.Source = loadBitmap(RollAnimation.Properties.Resources.bedrijven3);
46: ScaleTransform scaleTransform = new ScaleTransform(1, -1, 0, 0);
47: im.LayoutTransform = scaleTransform;
48:
49: _rollTopLeft = _rollTopLeft + _offset;
50: image.Source = loadBitmap(RollAnimation.Properties.Resources.bedrijven3);
51: image.Clip = new RectangleGeometry(new Rect(0, 0, _imageWidth, _rollTopLeft));
52:
53: double yPosition = _rollTopLeft + _3DSize;
54: double height = _3DSize;
55: if (Math.Abs((_imageHeight - _rollTopLeft)) < _3DSize)
56: {
57: height = Math.Abs(image.Height - _rollTopLeft);
58: CanAni.Height = height;
59: CanWrap.Height = height;
60: yPosition = _rollTopLeft;
61: Linetwo.Y1 = height;
62: Linetwo.Y2 = height;
63: }
64: Lineone.Visibility = Visibility.Visible;
65: Linetwo.Visibility = Visibility.Visible;
66: if (_imageHeight == _rollTopLeft)
67: {
68: _timer.IsEnabled = false;
69: Lineone.Visibility = Visibility.Collapsed;
70: Linetwo.Visibility = Visibility.Collapsed;
71: }
72: im.Clip = new RectangleGeometry(new Rect(0, yPosition, _imageWidth, height));
73: VisualBrush vb = new VisualBrush(im as Visual);
74: CanAni.Background = vb;
75: Canvas.SetTop(CanWrap, _rollTopLeft);
76: }
77: public static BitmapSource loadBitmap(System.Drawing.Bitmap source)
78: {
79: return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(source.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty,
80: System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
81: }
82: }