Expression Blend :
لتصميم واجهات برنامجك المختلفة ، حيث يوفر لك وسائل متعددة للتصميم ، سنحاول معرفة المزيد عنه بتفصيل في هذا الدرس ...
سنحاول الآن عمل تطبيق بسيط من خلال Expression Blend قم بتحميله أولاً من الروابط السابقة ، قم بتشغيله ومن ثم اختيار New Project ومن ثم WPF Application (*.exe) بالشكل التالي :
يمكنك اختيار اللغة التي تريد العمل عليها وال framework اضافة للاسم ومكان التخزين بالطبع .
من View اختر Active Document View ومن ثم اختر الوضع Split لتتمكن من عرض XAML و العرض العادي في نفس الوقت بالشكل التالي :
على جانب الشاشة ، ستجد كل الأدوات التي تحتاج إليها للتصميم سواء القلم والفرشاة وخلافه ، أو أزرار الأوامر ومربعات النصوص وخلافه من الأدوات التي ستستخدمها في برنامجك ، ايضاً يمكنك الضغط على آخر عناصر القائمة ليستعرض لك جميع الأدوات بالشكل التالي مثلاً :
خلال عملياتك في الرسم ، ستجد لأي اداة مجموعة من الخصائص على الجانب ، تستطيع منها التحكم بالمظهر وخلافه :
الآن كتطبيق سريع ، قم باضافة Canvas وقم بتحديد ابعاده ، هذا هو ال Canvas الذي سنضع فيه صورة خاصة بنا ونطبق عليها بعض التأثيرات :
كود :
[FONT=Tahoma][color=#000080]<Canvas>[/color][/FONT]
[FONT=Tahoma] [color=#000080]<Canvas x:Name="MainImageCanvas" Canvas.Left="40" Canvas.Top="120">[/color][/FONT]
الآن قم باضافة MediaElement ولنضع فيه صورة مثلاً ، سيكون ناتج XAML بالشكل التالي :
كود :
[FONT=Tahoma][color=#000080]<MediaElement x:Name="MainImage" Source=[COLOR=#0000ff]"c:/example/futex.jpg"[/color] Width=[color=#0000ff]"300"[/color] Height=[color=#0000ff]"300"[/color] >[/COLOR][/FONT]
[FONT=Tahoma] [color=#000080]</MediaElement>[/color][/FONT]
والآن سنقوم بتطبيق بعض التأثيرات على ال Canvas حيث نطبق عملية الميل من خلال الخصائص ، سيكون ناتج XAML بالشكل التالي :
كود :
[FONT=Tahoma][color=#000080]<Canvas.RenderTransform>[/color][/FONT]
[FONT=Tahoma] [color=#000080]<TransformGroup>[/color][/FONT]
[FONT=Tahoma] [color=#000080]<SkewTransform x:Name="MainSkewTransform" AngleY=[COLOR=#0000ff]"-19"[/color] AngleX=[color=#0000ff]"0"[/color] CenterX=[color=#0000ff]"0"[/color] CenterY=[color=#0000ff]"0"[/color]/>[/COLOR] [/FONT]
[FONT=Tahoma] [color=#000080]<ScaleTransform x:Name="MainScaleTransform" ScaleY=[COLOR=#0000ff]"1"[/color] ScaleX = "1" CenterX=[color=#0000ff]"0"[/color] CenterY=[color=#0000ff]"0"[/color]/>[/COLOR][/FONT]
[FONT=Tahoma] [color=#000080]</TransformGroup>[/color][/FONT]
[FONT=Tahoma] [color=#000080]</Canvas.RenderTransform>[/color][/FONT]
[FONT=Tahoma] [color=#000080]</Canvas>[/color][/FONT]
الآن قم بالضغط على F5 لتجربة العرض والذي سيكون بالشكل التالي :
سنحاول تطبيق نظرية الظل للصورة أيضاً ، لذا سنقوم بعمل Canvas ونضع فيه الصورة أيضاً ولكن مع زوايا ميل مختلفة هذه المرة بحيث تحاذي اطراف الصورة ، سيكون ناتج XAML بالشكل التالي :
كود :
[FONT=Tahoma][color=#000080]<Canvas x:Name="ReflectionImageCanvas" Canvas.Left="260" Canvas.Top="640">[/color][/FONT]
[FONT=Tahoma] [color=#000080]<MediaElement x:Name="ReflImage" Source=[COLOR=#0000ff]"c:/example/futex.jpg"[/color] Width=[color=#0000ff]"300"[/color] Height=[color=#0000ff]"300"[/color] Volume=[color=#0000ff]"0"[/color]>[/COLOR][/FONT]
[FONT=Tahoma] [color=#000080]</MediaElement>[/color][/FONT]
[FONT=Tahoma] [color=#000080]<Canvas.RenderTransform>[/color][/FONT]
[FONT=Tahoma] [color=#000080]<TransformGroup>[/color][/FONT]
[FONT=Tahoma] [color=#000080]<SkewTransform x:Name="ReflectionSkewTransform" AngleY=[COLOR=#0000ff]"19"[/color] AngleX=[color=#0000ff]"-41"[/color] CenterX=[color=#0000ff]"0"[/color] CenterY=[color=#0000ff]"0"[/color] />[/COLOR][/FONT]
[FONT=Tahoma] [color=#000080]<ScaleTransform x:Name="ReflectionScaleTransform" ScaleY=[COLOR=#0000ff]"-1"[/color] ScaleX=[color=#0000ff]"1"[/color] CenterX=[color=#0000ff]"0"[/color] CenterY=[color=#0000ff]"0"[/color] />[/COLOR][/FONT]
[FONT=Tahoma] [color=#000080]</TransformGroup>[/color][/FONT]
[FONT=Tahoma] [color=#000080]</Canvas.RenderTransform>[/color][/FONT]
[FONT=Tahoma] [color=#000080]</Canvas>[/color][/FONT]
وسيكون الناتج للصورة بالشكل التالي :
آخر نقطة سنتعامل معها هي اضافة الشفافية لصورة الظل ، من ضمن الخصائص أيضاً ، لذا ستجد ناتج ال XAML في النهاية بالشكل التالي :
كود :
[FONT=Tahoma][color=#000080]<Canvas x:Name="ReflectionImageCanvas" Canvas.Left="260" Canvas.Top="640">[/color][/FONT]
[FONT=Tahoma] [color=#000080]<MediaElement x:Name="ReflImage" Source=[COLOR=#0000ff]"c:/example/futex.jpg"[/color] Width=[color=#0000ff]"300"[/color] Height=[color=#0000ff]"300"[/color] Volume=[color=#0000ff]"0"[/color]>[/COLOR][/FONT]
[FONT=Tahoma] [color=#000080]</MediaElement>[/color][/FONT]
[FONT=Tahoma] [color=#000080]<Canvas.RenderTransform>[/color][/FONT]
[FONT=Tahoma] [color=#000080]<TransformGroup>[/color][/FONT]
[FONT=Tahoma] [color=#000080]<SkewTransform x:Name="ReflectionSkewTransform" AngleY=[COLOR=#0000ff]"19"[/color] AngleX=[color=#0000ff]"-41"[/color] CenterX=[color=#0000ff]"0"[/color] CenterY=[color=#0000ff]"0"[/color] />[/COLOR][/FONT]
[FONT=Tahoma] [color=#000080]<ScaleTransform x:Name="ReflectionScaleTransform" ScaleY=[COLOR=#0000ff]"-1"[/color] ScaleX=[color=#0000ff]"1"[/color] CenterX=[color=#0000ff]"0"[/color] CenterY=[color=#0000ff]"0"[/color] />[/COLOR][/FONT]
[FONT=Tahoma] [color=#000080]</TransformGroup>[/color][/FONT]
[FONT=Tahoma] [color=#000080]</Canvas.RenderTransform>[/color][/FONT]
[FONT=Tahoma] [color=#000080]<Canvas.OpacityMask>[/color][/FONT]
[FONT=Tahoma] [color=#000080]<LinearGradientBrush StartPoint=[COLOR=#0000ff]"0.5,0.0"[/color] EndPoint=[color=#0000ff]"0.5,1.0"[/color]>[/COLOR][/FONT]
[FONT=Tahoma] [color=#000080]<GradientStop Offset=[COLOR=#0000ff]"0.345"[/color] Color=[color=#0000ff]"#00000000"[/color] x:Name="ReflGradientStop1" />[/COLOR][/FONT]
[FONT=Tahoma] [color=#000080]<GradientStop Offset=[COLOR=#0000ff]"1.0"[/color] Color=[color=#0000ff]"#CC000000"[/color] x:Name="ReflGradientStop2" />[/COLOR][/FONT]
[FONT=Tahoma] [color=#000080]</LinearGradientBrush>[/color][/FONT]
[FONT=Tahoma] [color=#000080]</Canvas.OpacityMask>[/color][/FONT]
[FONT=Tahoma] [color=#000080]</Canvas>[/color][/FONT]
قم بضبط بعض اعدادات ال Left وال Top يدوياً او من الكود لجعل صورة الظل منطبقة على الصورة الاصلية ، سيكون ناتج الصورة :
الكود الكامل XAML :
كود :
[color=#000080]<Canvas>[/color]
[color=#000080]<Canvas x:Name="MainImageCanvas" Canvas.Left="40" Canvas.Top="120">[/color]
[color=#000080]<MediaElement x:Name="MainImage" Source=[COLOR=#0000ff]"c:/example/FUTEX.JPG"[/color] Width=[color=#0000ff]"300"[/color] Height=[color=#0000ff]"300"[/color] >[/COLOR]
[color=#000080]</MediaElement>[/color]
[color=#000080]<Canvas.RenderTransform>[/color]
[color=#000080]<TransformGroup>[/color]
[color=#000080]<SkewTransform x:Name="MainSkewTransform" AngleY=[COLOR=#0000ff]"-19"[/color] AngleX=[color=#0000ff]"0"[/color] CenterX=[color=#0000ff]"0"[/color] CenterY=[color=#0000ff]"0"[/color]/>[/COLOR]
[color=#000080]<ScaleTransform x:Name="MainScaleTransform" ScaleY=[COLOR=#0000ff]"1"[/color] ScaleX = "1" CenterX=[color=#0000ff]"0"[/color] CenterY=[color=#0000ff]"0"[/color]/>[/COLOR]
[color=#000080]</TransformGroup>[/color]
[color=#000080]</Canvas.RenderTransform>[/color]
[color=#000080]</Canvas>[/color]
[color=#000080]<Canvas x:Name="ReflectionImageCanvas" Canvas.Left="267" Canvas.Top="645">[/color]
[color=#000080]<MediaElement x:Name="ReflImage" Source=[COLOR=#0000ff]"c:/example/futex.jpg"[/color] Width=[color=#0000ff]"300"[/color] Height=[color=#0000ff]"300"[/color] Volume=[color=#0000ff]"0"[/color]>[/COLOR]
[color=#000080]</MediaElement>[/color]
[color=#000080]<Canvas.RenderTransform>[/color]
[color=#000080]<TransformGroup>[/color]
[color=#000080]<SkewTransform x:Name="ReflectionSkewTransform" AngleY=[COLOR=#0000ff]"19"[/color] AngleX=[color=#0000ff]"-41"[/color] CenterX=[color=#0000ff]"0"[/color] CenterY=[color=#0000ff]"0"[/color] />[/COLOR]
[color=#000080]<ScaleTransform x:Name="ReflectionScaleTransform" ScaleY=[COLOR=#0000ff]"-1"[/color] ScaleX=[color=#0000ff]"1"[/color] CenterX=[color=#0000ff]"0"[/color] CenterY=[color=#0000ff]"0"[/color] />[/COLOR]
[color=#000080]</TransformGroup>[/color]
[color=#000080]</Canvas.RenderTransform>[/color]
[color=#000080]<Canvas.OpacityMask>[/color]
[color=#000080]<LinearGradientBrush StartPoint=[COLOR=#0000ff]"0.5,0.0"[/color] EndPoint=[color=#0000ff]"0.5,1.0"[/color]>[/COLOR]
[color=#000080]<GradientStop Offset=[COLOR=#0000ff]"0.345"[/color] Color=[color=#0000ff]"#00000000"[/color] x:Name="ReflGradientStop1" />[/COLOR]
[color=#000080]<GradientStop Offset=[COLOR=#0000ff]"1.0"[/color] Color=[color=#0000ff]"#CC000000"[/color] x:Name="ReflGradientStop2" />[/COLOR]
[color=#000080]</LinearGradientBrush>[/color]
[color=#000080]</Canvas.OpacityMask>[/color]
[color=#000080]</Canvas>[/color]
[color=#000080]</Canvas>[/color]
لا تنس ان MediaElement يمكن ان تكون اي شيء ، لذا جرب مثلاً وضع فيديو وستجد ان نفس التأثير ينطبق عليه تماماً ...
طبعاً يمكنك نقل الكود كما هو إلى الفيجوال ستوديو وسيعمل بنفس الصورة .