C
C#2y ago
Lep

❔ Auto Resize

I'm attempting a little learning project and was wondering if I could get some help on the following:
var newimg = new BitmapImage();
newimg.BeginInit();
newimg.UriSource = new Uri("Images\\Snoop.gif", UriKind.Relative);
newimg.EndInit();
ImageBehavior.SetAnimatedSource(img, newimg);

MainWin.Width = img resized width; <-----

SizeChanged += (o, e) =>
{
var r = SystemParameters.WorkArea;
Left = r.Right - ActualWidth;
Top = r.Bottom - ActualHeight;
};
var newimg = new BitmapImage();
newimg.BeginInit();
newimg.UriSource = new Uri("Images\\Snoop.gif", UriKind.Relative);
newimg.EndInit();
ImageBehavior.SetAnimatedSource(img, newimg);

MainWin.Width = img resized width; <-----

SizeChanged += (o, e) =>
{
var r = SystemParameters.WorkArea;
Left = r.Right - ActualWidth;
Top = r.Bottom - ActualHeight;
};
How can I get the automatically resized width of the new img? My current main window has a capped height of 300. The width is auto and the img has an auto height and width so it scales to the 300 pixel height. If I manually change the main window width size everything works perfectly fine. I tried the following but it didn't seem to work: MainWin.Width = (MainWin.Height / img.ActualHeight) * img.ActualWidth; which would give me 146.25 to be the correct width. It works if I insert the size manually, but it doesn't work if I use the equation to set the size. I've also tried:
SizeChanged += (o, e) =>
{
var r = SystemParameters.WorkArea;
//Left = r.Right - (234 * 300 / 480);
Left = r.Right - (img.ActualWidth * MainWin.Height / img.ActualHeight);
Top = r.Bottom - ActualHeight;
};
SizeChanged += (o, e) =>
{
var r = SystemParameters.WorkArea;
//Left = r.Right - (234 * 300 / 480);
Left = r.Right - (img.ActualWidth * MainWin.Height / img.ActualHeight);
Top = r.Bottom - ActualHeight;
};
The commented out section seems to work fine but the bottom doesn't, I also tried to change "ActualWidth/Height" to just normal.
6 Replies
Ryada
Ryada2y ago
So first things first. Did you check if the values for the manual calculation are the ones being used during runtime? If you place a breakpoint on the line where you set Left during debugging it will pause execution there and you can read the values of the img and mainwindow that you are using Try seeing if any of those values aren’t matching the expected values
Accord
Accord2y ago
Was this issue resolved? If so, run /close - otherwise I will mark this as stale and this post will be archived until there is new activity.
Lep
LepOP2y ago
Sorry didn't get a chance to get on, none of the values are matching. My image properties are 234x480, if I leave it empty without trying to resize, the width is 1440, if I try to use MainWin.Width = img.ActualWidth; as a test, it stays as 1440, if I try to make it "img.Width" instead the Width value becomes 2.
Lep
LepOP2y ago
These are the values manually inserted, I would like to calculate it as: (img.ActualWidth * MainWin.Height / img.ActualHeight) but it doesn't seem like I can get the image's properties. Or if there's a better way of doing this, would be great, I can't put it automatic cause the actua; width value will always be 1440.
Lep
LepOP2y ago
Nevermind, found a solution. I was trying to use newimg to deal with the problem before but it wasn't working since I didn't have the images on my debug file so I was using "img" instead since it seems like it should of been working. I threw my Images folder inside the debug folder and called it a day to make it work lol. Still, if there's a better way of dealing with this, please, do let me know.
Accord
Accord2y ago
Was this issue resolved? If so, run /close - otherwise I will mark this as stale and this post will be archived until there is new activity.
Want results from more Discord servers?
Add your server