PDA

View Full Version : آموزش: تکنیکهای پیشرفته Wpf



rearea
جمعه 11 فروردین 1391, 19:04 عصر
84934با سلام خومت دوستان گلم ,تو این تاپیک میخوام تکنیکهای حرفه ای wpf رو با استفاده از مثالهایه کاربردی یادتون بدم ,امیدوارم این تاپیک بدردتون بخوره.

میلاد رئیسی
جمعه 11 فروردین 1391, 20:52 عصر
سلام
به به !!!
شما شروع کن اینم رزرو برای ما !!! :قلب:

ali190
جمعه 11 فروردین 1391, 20:56 عصر
سلام جناب rearea عزیز
سال نوتون مبارک باشه
میشه ازتون یه خواهش کنم
خیلی از ما با WPF آشنایی نداریم و حتی نمیدونیم چی هست
برای اینکه آموزشتون برای همه دوستان مفید باشه میش هازتون خواهش کنم تو چند تاپست اول ابتدا WPF تعریف بشه و مباحث مقدمایش گفته بشه و سپس به مباحث پیشرفته تر پرداخته بشه
ازتون خیلی خیلی ممنونم
یاعلی

iranrose63
شنبه 12 فروردین 1391, 00:17 صبح
سلام جناب rearea عزیز
سال نوتون مبارک باشه
میشه ازتون یه خواهش کنم
خیلی از ما با WPF آشنایی نداریم و حتی نمیدونیم چی هست
برای اینکه آموزشتون برای همه دوستان مفید باشه میش هازتون خواهش کنم تو چند تاپست اول ابتدا WPF تعریف بشه و مباحث مقدمایش گفته بشه و سپس به مباحث پیشرفته تر پرداخته بشه
ازتون خیلی خیلی ممنونم
یاعلی

آموزش wpf مقدماتی تا پیشرفته
http://barnamenevis.org/showthread.php?102127-آموزش-WPF-(مقدماتی-تا-پیشرفته)

rearea
شنبه 12 فروردین 1391, 22:33 عصر
شفاف کردن کنترلها (trancparency):
برای این که یه کنترل رو تو wpf ,با opacity کمتر, نمایش بدیم فقط کافیه که background اون کنترل رو تنظیم کنیم , ظاهر برنامه باید چیزی شبیه این باشه:
85008
برای مقداردهی background هر کنترل میشه روکنترل ساخته شده کلیک کرد وبعدش از سمت راست در قسمت property ها مقدار background رو opacity رو کم کرد.


<StackPanel.Background>
<ImageBrush ImageSource="c:/0.jpg" Opacity="1" ></ImageBrush>
<StackPanel.Background/>
<Button Foreground="White" FontSize="16" Margin="10" BorderBrush="White" Background="#60aa4030" Padding="20">A semi</Button>
</StackPanel>

rearea
شنبه 12 فروردین 1391, 22:50 عصر
این سورس برنامه:
http://www.up.98ia.com/images/ykhslkc3qw1dhu5g02kg.rar

rearea
شنبه 12 فروردین 1391, 23:15 عصر
حذف کردن تدریجی یک کنترل با خاصیت opacitymask
85009
برای حذف تدریجی باید اول با یک نوع از brush ها آشنا بشین به نام linearGradiantBrush , این براش رو تو این قسمتت توضیح میدم چون تو برناممون خیلی بدرد میخوره.
خصیصه linearGradiantBrush دو خصوصیت داره به نامهای startpoint ,end point که نقطه های x,y محل شروع وپایان محو شدگی رو مشخص میکنه.


<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">

حالا کافیه که رنگ هرقسمت از براش رو با GradiantStops مشخص کنیم :



<GradientStop Offset="0" Color="Black"></GradientStop>
<GradientStop Offset="1" Color="Transparent"></GradientStop>

اینم کل کدی که باید در wpf بنویسین:


<StackPanel Margin="5">
<Button FontSize="14" FontWeight="Bold">
<Button.OpacityMask>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Offset="0" Color="Black"></GradientStop>
<GradientStop Offset="1" Color="Transparent"></GradientStop>
</LinearGradientBrush>
</Button.OpacityMask>
<Button.Content>A Partially Transparent Button</Button.Content>
</Button>
</StackPanel>

و اینم سورس برنامه:
http://www.up.98ia.com/images/6nmn3ejtk4covevuknd6.rar

rearea
یک شنبه 13 فروردین 1391, 00:35 صبح
reflection(بازتاب تصویر) :
85011
برایه بازتاب تصویر روش مستقیم وجود نداره و باید از تکنیکهایه خاصی استفاده کنیم ,در واقع باید کلک رشتی بزنیم!
برایه ایجاد بازتاب باید از سه تکنیک
VisualBrush + OpacityMask + RenderTransform = reflection effect
استفاده کرد.
اولش باید 2 تا textbox بزاریم که مقادیر اینها با هم bind شدن (یعنی مقادیر این دو تکس باکس رو با این روش یکی میکنیم) , وبا استفاده از روش RenderTransform تکس باکس دوم رو میچرخونیم و با دو روشVisualBrush + OpacityMask تکس باکس دوم رو به صورت تدریجی محو میکنیم
فقط من تو این برنامه به جایه اینکه از دو تکس باکس استفاده کنم , از یه تکس باکس و یه rectangle استفاده میکنم تاشما قدرت انعطاف wpf رو درک کنین .
من تو این برنامه کل خصوصیات یک texbox رو به یه rectangle بایند میکنم تا تمام خصوصیات یک تکس باکس رو داشته باشه:


<VisualBrush Visual="{Binding ElementName=txt}"></VisualBrush>

این کدم طرز محو کردن توریجی این rectangle رو نشون میده:



<Rectangle.OpacityMask>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0.3" Color="Transparent"></GradientStop>
<GradientStop Offset="1" Color="#44000000"></GradientStop>
</LinearGradientBrush>
</Rectangle.OpacityMask>

واینم کدی که باعث میشه rectangle بچرخه تا بازتاب تصویر دقیقا به صورت آینه ای باشه:



<Rectangle.RenderTransform>
<ScaleTransform ScaleY="-1"></ScaleTransform>
</Rectangle.RenderTransform>

اینم کل کدش:


<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>

</Grid.RowDefinitions>


<TextBox MaxHeight="30" Name="txt" >Here is some reflected text</TextBox>
<Rectangle Grid.Row="1" RenderTransformOrigin="1,0.5">
<Rectangle.Fill>
<VisualBrush Visual="{Binding ElementName=txt}"></VisualBrush>
</Rectangle.Fill>
<Rectangle.OpacityMask>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0.3" Color="Transparent"></GradientStop>
<GradientStop Offset="1" Color="#44000000"></GradientStop>
</LinearGradientBrush>
</Rectangle.OpacityMask>
<Rectangle.RenderTransform>
<ScaleTransform ScaleY="-1"></ScaleTransform>
</Rectangle.RenderTransform>
</Rectangle>

</Grid>

اینم سورس برنامه :
http://www.up.98ia.com/images/rjvqbdyr0n70fezbe7gd.rar

rearea
یک شنبه 13 فروردین 1391, 01:32 صبح
بچه ها موضوع های این تاپیک ادامه داره...
برای تماس با من میتونین از یکی از راههایه زیر استفاده کنین:
1 -ایمیل : reza_bigham81@yahoo.com
2-موبایل: 09149987123
همه کسایی که با نظرانشون کمکم میکنن ممنونم .
موفق وموعید باشید رضا مهرنیا.

rearea
یک شنبه 13 فروردین 1391, 01:38 صبح
راستی اگه wpf رو به صورت مقدماتی میخواین آغاز کنین از تاپیک مهدی کیانی تو همین سایت استفاده کنین.

سوداگر
یک شنبه 13 فروردین 1391, 17:09 عصر
reflection(بازتاب تصویر) :
85011
برایه بازتاب تصویر روش مستقیم وجود نداره و باید از تکنیکهایه خاصی استفاده کنیم ,در واقع باید کلک رشتی بزنیم!
برایه ایجاد بازتاب باید از سه تکنیک [I][FONT=Utopia-Italic][SIZE=1][FONT=Utopia-Italic][SIZE=1]
VisualBrush + OpacityMask + RenderTransform = reflection effect
استفاده کرد.

دوست عزیز فایل ضمیمه دانلود نمیشه لطفا از ضمیمه ضمنی استفاده نکنید.
با تشکر