من یه فرم دارم با رزولیشن ثابت 1600 در 900 و یه Canvas با همین رزولیشن اما وقتی یه ایمیج رو روش میزارم جاش عوض میشه
چیکار باید بکنم من باید جاشون برام ثابت باشن
من یه فرم دارم با رزولیشن ثابت 1600 در 900 و یه Canvas با همین رزولیشن اما وقتی یه ایمیج رو روش میزارم جاش عوض میشه
چیکار باید بکنم من باید جاشون برام ثابت باشن
سلام
اگر امکان داره کد Canvas رو قرار بدید تا طریقه چیدمان شما رو بررسی کنیم(اگر canvas درون Panel دیگه ای مثل Grid یا ..... قرار داره با کد اون Panel کامل اینجا قرار بدید)
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="900" Width="1600" AllowsTransparency="True" WindowStartupLocation="CenterScreen" WindowStyle="None">
<Window.Background>
<ImageBrush TileMode="None" ImageSource="F:\f1\Untitled-010.jpg" />
</Window.Background>
<Canvas Height="900" Name="canvas1" Width="1600">
<Image Canvas.Left="133.32" Canvas.Top="207.757" Height="445.511" Name="image1" Stretch="Fill" Width="191.092" Source="file:///F:/f1/Panel 1.png" ImageFailed="image1_ImageFailed" />
</Canvas>
</Window>
و یه چیز دیگه اونم اینکه این page هست که توی add وجود داره میشه یه کم در موردش توضیح بدید
سلام
من کد شما رو تست کردم کردم و مشکلی درش ندیدم احتمالا تنظیمات دیگه ای در برنامه شما این مشکل رو ایجاد میکنه اما شما میتونید با استفاده از Grid هم این کار رو انجام بدید به این شکل که در گرید 2 تا ستون ایجاد کنید و ستونی رو که نمیخواید با تغییر ابعاد ، تغییر کنه ، به شکل زیر تعریف کنید
<ColumnDefinition Width="298"/>
و هم چنین باید دو تا سطر هم بهش اضافه کنید و اون سطری ر. که نمیخواید جا بجا بشه مانند ستون بالایی تعریف کنید
حالا کنترل Image رو درون این سطر و ستون مورد نظر تعریف کنید
کد زیر رو جای کد Canvas برنامه بگذارید و ببینید نتیجه چی میشه
<Grid x:Name="Grid" >
<Grid.RowDefinitions>
<RowDefinition Height="205"/>
<RowDefinition Height="450.104"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="184"/>
<ColumnDefinition Width="178"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Image x:Name="image1" Stretch="Fill" Source="file:///F:/f1/Panel 1.png" Grid.Row="1" Grid.Column="1" />
</Grid>
دقت کنید من به Image طول و عرض ندادم و در Grid قرار دادم
در خصوص Page این لینک رو مطالعه کنید
جاش عوض میشه میره به سمت بالا نمیدونم چرا
ببینید من یه بک گراوند دارم که چند تا آیکن ثابت روشه من نمی خوام آیکن ها رو از روش بر دارم
من پی ان جی اون آیکن ها رو دارم میخوام تو همون نقاط توی فرم بزام روش تنظیم که می کنم برنامه ران میشه جاشون عوض میشه
من توی اپلیکیشن یه ایمیج رو با بک گراوند ترنسپرنت میذاشتم روی آیکن و از اون به بعد می تونستم برای اون محدوده رویدادی تعریف کرد .
توی wpf نمیشه وقتی عکس هیچی توش نباشه ایمیج رو نمایش نمیده شما رراهی رو دارید بگید
ممنونم که پاسخ میدید
کدی رو که من دادم روی برنامه ای تست کردم و جای Image تغییر نکرد، کد فرم شما دقیق مثل همینی هست که داده بودید؟؟ جایش رو تغییر ندادید؟
راستی یک نکته من تنظیمات سطر و ستون ها رو همینجوری انجام دادم شما ارتفاع و عرض ستون ها رو جوری تنظیم کنید که با کارتون منطبق باشه و عکس ها در محل مناسب قرار بگیره بعد برنامه رو اجرا کنید (اگر با Blend این کار رو انجام بدید بهتره)
من متوجه تیکه آخر نوشتتون نشدم
من دقیق نمیدونم برای چی دارین این کار رو میکنین و چی تو ذهنتون هست ؟ شاید دارید لقمه رو دور سرتون می پیچونیدتوی wpf نمیشه وقتی عکس هیچی توش نباشه ایمیج رو نمایش نمیده شما رراهی رو دارید بگید
من پیشنهاد میکنم فایل برنامه رو حداقل فقط همین فرم رو در برنامه بگذارید تا بتونم کمک کنم
قدرت طراحی WPF خیلی بالاست و نیازی به این گونه کار ها با عکس و Image و ... نیست
من درست درک نکردم جریان چیه
بله بدون تغییر اما نشد
ببینید من تو اپلیکیش یه ایمیج رو به فرمم اضافه می کردم هیچ عکسی رو توش نمیذاشتم و خاصیت بک گراوند کالر رو ترنس پرنت میذاشتم اون رو روی یه قسمت از بک گروند فرمم میذاشتم تا وقتی روی اون قسمت ایونتی اتفاق افتاد من براش کد بنویسم
حالا میشه این کار رو تو wpf کرد
چجوری
شما می تونید بجای Image یک Border بگذارید و opacity رنگ بکگراند رو صفر کنید و بعد اونو با استفاده از Grid و یا همین Canvas در جای مناسب بگذارید و برای رویداد کلیک اون کد بنویسید ( نکته مهم اینه که اگر به بکگراند Border رنگ ندید کار نمیکنه باید رنگ بدید ولی Opacity رنگ رو صفر کنید )
گفتم اگر یک نمونه از فرموتون رو اینجا قرار بدید میتونم براتون اصلاح کنم تا نتیجه رو ببینید اگر هم مایلید به ایمل من ارسال کنید
ببخشید یه خورده کار محرمانست
مجبور شدم ببرم تو wpf
بازم ممنون
میرم چک کنم
من خودم یک نمونه براتون گذاشتم ببینید
بجای Border از Ellipse استفاده کردم تا گرد باشه آخه اون آیکونی که Ellipse روش قرار دادم گرده در ضمن تمام سطر و ستون های گرید رو * دار نوشتم چون میخواستم با تغییر اندازه فرم این کنترل هن هم اندازه اون آیکون سبز بزرگ بشه
رنگ بکگراند Ellipse رو مشکی ولی کم رنگ گذاشتم و یک بودر قرمز هم دورش گذاشتم تا محلش دقیقا مشخص باشه
شما سایز فرم رو تغییر بدید نتیجه رو ببینید و هم چنین روش کلیک کنید
نگاه کنید
این قبل از اجراست
و اینم بعدش
![]()
فایل ضمیمه منو ببینید
شما باید گرید خیلی دقیق تنظیم کنید من در شکل میبینم که سطر های گرید از بالا و پایین دقیقا روی عکس ها ست نشده
روی تنظیمات باید کار کنید روشی رو که در فایل ضمیه بکار بردم امتحان کنید
ممنون تقریبا درست شد
خیلی واسه راهنمایی هاتون مچکرم
خدا خیرتون بده
بای