سوال

چرخش تصویر در WPF به کمک C#

بازدید360پست ها1آخرین فعالیت2 سال پیش
2
2

سلام
من یک پروژه دارم می نویسم انشاا... آخرهای پروژه است و در قسمتی از این پروژه می خوام از طریق یک چاپگر یک کارت عضویت چاپ کنم مشکلی با چاپ به زبان انگلیسی ندارم اما وقتی به زبان فارسی (که از راست به چپ است) می خوام کارت عضویت رو چاپ کنم نوشته ها به شکر زیر دیده می شوند:
https://docs.microsoft.com/en-us/answers/storage/attachments/126063-reverse-image.png
اما به وسیله یک برنامه ای مانند فوتوشاپ و یا برنامه ای که قابلیت چرخش افقی تصویر رو داره میشه این مشکل رو برطرف کرد و تصویر درست میشه مانند تصویر زیر:
https://docs.microsoft.com/en-us/answers/storage/attachments/126017-true-image.png
اما من می خوام این کار رو در سی شارپ انجام بدم یک الگوریتم یا روش انجام کار هم به ذهنم خورده شاید کمک کنه بهتون (چون متدی برای چرخش افقی پیدا نکردم) اونم اینکه اگر بتونیم X1,X2 و نیز Y1,Y2 قسمتی که می خواهیم چاپ بشه ، رو جابجا کنیم به نظرم این مشکل رفع میشه فقط دقت کنید این برنامه در WPF است نه Windows form.
این هم کدهای برنامه:
قسمت WPF:

            <GroupBox x:Name="PrintPreview_GroupBox" Header="Preview" Height="223" Width="400" Background="Transparent" HorizontalAlignment="Left" Visibility="Visible" Margin="14,228,0,14">
            </GroupBox>

قسمت سی شارپ:

        private void PrintButton_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            PrintDialog PD = new PrintDialog();
            var Printer = new LocalPrintServer().GetPrintQueues();
            var SelectedPrinter = Printer.FirstOrDefault(P => P.Name == "Software602 Print2PDF");
            PD.PrintQueue = SelectedPrinter;
            var Size = new Size(PD.PrintableAreaHeight, PD.PrintableAreaWidth);
            PrintPreview_GroupBox.Measure(Size);
            PrintPreview_GroupBox.Arrange(new Rect(new Point(0, 0), Size));
            PD.PrintVisual(PrintPreview_GroupBox, "Print");
        }

چند قسمت دیگه هم مشکل دارم که اگر کسی بتونه پاسخ درست بده مبلغی هم باهاشون توافق می کنم (چون احتمال میدم زمان زیادی ببره که خودم بتونم مشکلات رو رفع کنم دارم مشورت میگیرم چون این پروژه رو هرچه زودتر باید تحویل بدم)
با تشکر

1 پاسخ

2

درود
من خودم برای چاپ Report یا همون گزارش از برنامه Stimulsoft Report استفاده میکنم که کاملا با دات نت هم خوانی داره و reference هم داره که داخل پروژه اضافه میشه دیگه درگیره این داستانا نمیشید. فقط کافیه داخل stimulsoft گزارشتون رو درست کنید اگه پارامتر نداره گزارشتون که مستقیم به پایگاه دادتون متصل میشه و اگه پارامتر داره که خیلی راحت میتونید از wpf به گزارشتون پارامتر بفرستید بعد یه خروجی فایل بهتون میده که اون فایل رو با شی Report که مال خود stimulsoft هست میتونید نمایش بدید. واقعا امکانات باورنکردنی داره این برنامه که من تا حالا ندیدم یه برنامه گزارش گیری انقدر کامل باشه. الان اکثر نرم افزارهای حسابداری هم از همین برنامه برای نمایش گزارش استفاده میکنن. اگه خواستید با این برنامه کار کنید میتونم کامل توضیح بدم که چه طور استفاده کنید. فقط اگه خواستید نصب کنید حتما نسخه 2017.1.3 رو نصب کنید نسخه های جدیدش کرک جالبی ندارن.
اما اگه میخوایین از همین روش خودتون استفاده کنین تو قسمت تعریف Groupbox این باعث میشه که Groupbox به اصطلاح flipX یا همون آینه بشه:

<GroupBox x:Name="PrintPreview_GroupBox" Header="Preview" Height="223" Width="400" Background="Transparent" HorizontalAlignment="Left" Visibility="Visible" Margin="14,228,0,14">
  <GroupBox.RenderTransform>
    <ScaleTransform ScaleX="-1" />
  </GroupBox.RenderTransform>
</GroupBox>
آخرین ویرایش: 25-08-2021 ???? 02:22، توسط عباس اختیاری
سلام الان من کد سی شارپ هم درست کردم از این ScaleTransform چون مقدارش متغیر برای انگلیسی باید 1 بشه و برای فارسی باید 1- بشه حالا مشکل اینجاست وقتی آینه میشه درست میشه اما از کادر میزنه بیرون – رضا جافری 2 سال پیش
که کدش اینطور میشه: ((ScaleTransform)PrintPreview_GroupBox.RenderTransform).ScaleX =- 1; البته اینجا برعکس نشون میده – رضا جافری 2 سال پیش
حالا یک روشی است که بیام Margin تک تک کنترل ها رو تغییر بدم ، که درست میشه و دوباره به کادر بر میگرده اما به نظر این روش معقولی نباشه – رضا جافری 2 سال پیش
کد حتماً باید داخل سی شارپ باشه چون کاربر زبان برنامه رو مشخص می کنه و بعید بدونم با XAML بشه این کارو کرد – رضا جافری 2 سال پیش
راجب stimulsoft که گفتید سعی می کنم 0 تا 100 برنامه رو خودم بنویسم اضافه بار نندازم رو برنامه و اینکه درگیر با کرک نشم و اینکه خیلی از این کامپوننت ها مشکل ظاهر دارند نمیشه ظاهرشون رو به هر زبانی که می خواهید تغییر داد – رضا جافری 2 سال پیش
راجب بحث ما هم اینو بگم ، اگر باعث ناراحتی شما شدم معذرت می خوام ولی هنوز رو حرف هام هستم شاید ایراد از منه که خیلی حساسم – رضا جافری 2 سال پیش
مثلاً من در پروژه ای می خواستم از کلاس File Dialog استفاده کنم اما نمیتونستم ظاهر بعضی از کنترل ها ی اون رو عوض کنم یا اینکه زبانش رو فارسی کنم به همین خاطر ماه ها زمان برد تا یک چیزی شبیه به اون درست کردم البته قابلیت هاش کمتره ولی در عوض میشه... – رضا جافری 2 سال پیش
هر طور که برنامه نویس بخواد زبانش رو تغییر بده حتی می تونه به جای دسکتاپ از کلمه میز کار استفاده کنه البته اگر وقت کنم دوباره از اول می سازمش ، ایندفع با تمام قابلیت های File Dialog به علاوه رابط کاربری زیبا ، پشتیبانی از اکثر زبان های دنیا... – رضا جافری 2 سال پیش
کارایی بسیار بالاتر به شکلی که با کمترین منابع سخت افزار مانند حافظه و پردازنده بتون بیشترین کارایی داشته باشه و همچنین رایگان باشد – رضا جافری 2 سال پیش
جالب بدونید من تعمیرات گوشی همراه که انجام میدم هم به همین اندازه حساسیت به خرج میدم مثلاً سری G و Y هواوی یک ایراد شایع دارند اونم اینکه حافظه داخلیشون به مشکل برمیخوره من برای تعویض این آیسی ، آی سی مشابه قبلی خودش رو استفاده نمی کنم بلکه... – رضا جافری 2 سال پیش
آی سی با ظرفیت بیشتر ، همچنین سرعت بیشتر و خرابی کمتر استفاده می کنم که هم در سرعت گوشی تاثیر داره و هم ظرفیت حافظه داخلی افزایش پیدا می کنه (البته اگر پردازند توانایی ظرفیت بیشتر رو داشته باشه) مثلاً ظرفیت 4 گیگ رو به 16 گیگ ارتقا دادم – رضا جافری 2 سال پیش

سوال برنامه نویسی دارید؟

ندونستن عیب نیست، نپرسیدن چرا!

این سوال حل نشده است!

این سوال هنوز حل نشده یا به پاسخ بهتری نیاز دارد. برای پاسخ به این سوال کافیست وارد حساب کاربری خود شوید.