نمایش نتایج 1 تا 3 از 3

نام تاپیک: باز شدن پنجره در مکان خاصی از صفحه مانیتور همراه با افکت

  1. #1
    کاربر دائمی آواتار ahrimaneahurai
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران
    پست
    554

    باز شدن پنجره در مکان خاصی از صفحه مانیتور همراه با افکت

    سلام
    من من توی برنامم می خوام یه پنجره ای به صورت یا fade یا حرکت از پایین به بالا توی صفحه کاربر نشون داده شه
    برنامه به این طریق هست که یک notify icon می خوام داشتم داشته باشم که مثلا هر یک ساعت 1 بار یه پیامی به کاربر بده.البته نه به صورت tooltip . می خوام یه پنجره همراه افکت باز شه یه دکمه برای بستن داشته باشه و یا اینکه مثلا بعد از 1 دقیقه خودش باز با همون افکت بسته شه
    حالا واسه این کار 2 تا مرحله دارم
    1-پنجره کجای مانیتور باز شه : من می خوام سمت ساعت ویندوز باز شه. برای این کار خود wpf تابعی داره یا اینکه باید اول رزولیشن مانیتور رو در بیارم و بعد بهش دستی نقطه بدم که باز شه ؟
    2-این افکت ها رو چه جوری می تونم به پنجرم بدم ؟
    ممنون میشم که به این 2 تا سوال من جواب بدید

  2. #2
    VIP آواتار مهدی فرزاد
    تاریخ عضویت
    فروردین 1403
    محل زندگی
    اهواز
    سن
    43
    پست
    1,154

    نقل قول: باز شدن پنجره در مکان خاصی از صفحه مانیتور همراه با افکت

    سلام
    برای قسمت اول سئوال شما باید رزولیشن رو بدست بیارید و بر حسب اون پوزیشن رو تعیین کنید

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

    AllowsTransparency="True" Topmost="True" WindowStyle="None" Background="{x:Null}" Foreground="{x:Null}" WindowState="Maximized" ShowInTaskbar="False">


    در این حالت یک پنجره دارید در حالت ماکزیماز شده و بدون بکگراند و در تسک بار ویندوز هم نمای ازش نیست و شما به تمام صفحه دسک تاپ دسترسی دارید حالا شما یک یوزر کنترل تعریف میکنی و گوشه فرم بالا سمت چپ قرارش میدی و این افکت یا هر افکت دیگه رو بر روی اون اعکال میکنی و با تغییر سایز رزولیشن همیشه اون گوشه بالا هست

    این کد یوزر کنترل نمونه
        <Grid>
    <Border BorderThickness="2" CornerRadius="4" BorderBrush="Black">
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Tahoma" FontSize="32" Text="Mehdi Farzad"></TextBlock>
    <Border.Background>
    <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
    <GradientStop Color="#FF00DCDA" Offset="0" />
    <GradientStop Color="Cyan" Offset="1" />
    </LinearGradientBrush>
    </Border.Background>
    </Border>
    </Grid>
    </UserControl>


    این کد استفاده از یوزر کنترل در فرم
     
    <Grid>
    <my:UserControl1 Margin="0,10,10,0" x:Name="userControl11" VerticalAlignment="Top" Height="172" HorizontalAlignment="Right" />

    </Grid>

    و این هم کد اکشنی که درست میکنید

    <Window.Resources>
    <Storyboard x:Key="Storyboard1" AutoReverse="True">
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="userControl11">
    <SplineDoubleKeyFrame KeyTime="0" Value="0"/>
    <SplineDoubleKeyFrame KeyTime="0:0:1" Value="1"/>
    <SplineDoubleKeyFrame KeyTime="0:0:2" Value="1"/>
    </DoubleAnimationUsingKeyFrames>
    </Storyboard>
    </Window.Resources>


    حالا هر جا میخوای این اکشن اجرا بشه بنویس

    System.Windows.Media.Animation.Storyboard MyStoryboard = (System.Windows.Media.Animation.Storyboard)(FindResource("Storyboard1"));
    MyStoryboard.Begin();


    فایل ضمیه هست(test 2)


    برای قسمت دوم سئوال : (اگه بخوای با بدست آوردن رزولیشن و استفاده از یک پنجره کوچک این کار رو بکنی و از راه ابتکاری که گفتم نری)
    بعد از اینکه محل باز شدن پنجره رو با کد نویسی بدست آوردی و ست کردی
    شما یک
    Storyboard

    تعریف میکنیدبه عنوان مثال



    <Window.Resources>
    <Storyboard x:Key="OnLoaded1" AutoReverse="True" Completed="Storyboard_Completed">
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="window">
    <SplineDoubleKeyFrame KeyTime="0" Value="0"/>
    <SplineDoubleKeyFrame KeyTime="0:0:1" Value="1"/>
    <SplineDoubleKeyFrame KeyTime="0:0:2" Value="1"/>
    </DoubleAnimationUsingKeyFrames>
    </Storyboard>
    </Window.Resources>


    حالا اونو بشکل زیر به وسیله Trigers به اونت لود فرم برنامه متصل میکنید

    <Window.Triggers>
    <EventTrigger RoutedEvent="FrameworkElement.Loaded">
    <BeginStoryboard Storyboard="{StaticResource OnLoaded1}"/>
    </EventTrigger>
    </Window.Triggers>

    نکته 1 : برای اینکه بتونید با افکت اوپسیدی فرم رو کم کنید یا اونو فید کنید باید حتما خاصیت AllowsTransparency فرم رو برابر true قرار بدید
    با کد های بالا پنجره شما با حالت فید باز میشه و بعد از چند ثانیه با حالت فید بسته میشه
    نکته 2 : ( مهم) برای اینکه بعد از اینکه پنجره با حالت فید کم رنگ و مهو شد کاملا بسته بشه باید برای اون Storyboard که اول تعریف کردیم یک متد
    Completed="Storyboard_Completed"
    درست کنید و در اون بنویسید

    privatevoid Storyboard_Completed(object sender, EventArgs e)
    {
    this.Close();
    }


    فایل ضمیمه میباشد،Test1(البته من در این فایل محل باز شدن ویندوز رو مشخص نکردم)

    سعی کردم در این دوراه دونمونه طریقه استفاده از اکشن درست شده رو هم توضیح بدم
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله مهدی فرزاد : سه شنبه 07 دی 1389 در 00:11 صبح

  3. #3

    نقل قول: باز شدن پنجره در مکان خاصی از صفحه مانیتور همراه با افکت

    اگر Net. نمی دانید وارد نشوید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •