PDA

View Full Version : ایجاد opacity در BMP.Canvas.font



h00manb
دوشنبه 07 فروردین 1391, 12:07 عصر
سلام
آیا امکان ایجاد opacity (شفافیت) در نوشته ها در BMP.Canvas.font (که bmp از نوع TBitmap است) وجود دارد؟
به طور کلی چطور؟ امکان ایجاد شفافیت برای قلم وجود دارد؟

firststep
دوشنبه 07 فروردین 1391, 12:43 عصر
سلام دوست عزیز
با چه سری کار می کنید این کار را به راحتی هرچه تمام تر می توانید در سری xe2 انجام بدید
توصیه می کنم حتماً یه تستی کنین

h00manb
دوشنبه 07 فروردین 1391, 21:38 عصر
سلام
اتفاقا از سری xe2 استفاده میکنم
چطوری باید این کار را بکنم؟با چه دستوری؟

mbshareat
سه شنبه 08 فروردین 1391, 01:01 صبح
SetBkMode(Bmp.Canvas.Handle,Transparent);

h00manb
سه شنبه 08 فروردین 1391, 07:36 صبح
سلام
این دستور باعث میشه که اگر زمینه شفاف بود با نوشته ترکیب بشه اما اگر زمینه شفاف نباشه ترکیبی اتفاق نمی افته , من می خوام خود نوشته شفاف باشه و بشه درجه شفافیتش را تعیین کرد و با زمینه زیرش ترکیب بشه

moein+
سه شنبه 08 فروردین 1391, 09:49 صبح
سلام،
تا اونجایی که من می دونم در Canvas استاندارد دلفی (یعنی اون چیزی که تو VCL داریم ) حتی اگر شما فرمت پیکسلی Bitmap رو 32 بیتی در نظر بگیرید قادر به انجام همچین کاری نخواهید بود چرا که مبنای محاسبات این Canvas بایت چهارم یعنی آلفا رو در نظر نمی گیرد، یعنی خود TColor در این حالت فاقد کانال آلفا طراحی شده (و تمامی توابع ترسیمی و ....)

برای نیل به هدفی که طرح کرده اید در حالت VCL باید از یک کتابخانه یا کامپوننت استفاده کنید بهترین چیزی که من میشناسم در این خصوص Graphic32 هست و یا چنانچه از XE2 استفاده میکنید اگر از Firemonkey استفده نمائید در اون حالت Canvas جدید کاملا 32 بیتی هست و از کانال آلفا پشتیبانی خواهد نمود...

البته راه حل های دیگری هم وجود دارد مثل استفاده از API گرافیکی خود ویندوز یعنی GDI-plus و ...

h00manb
سه شنبه 08 فروردین 1391, 11:53 صبح
متغیر bmp که از نوع TBitmap بود در Firemonkey باید از چه نوعی انتخاب شود؟

MohsenB
سه شنبه 08 فروردین 1391, 12:36 عصر
سلام


یه راهش اینه که متنی رو که میخواید روی تصویر بنویسید با تصویر ترکیب کنید به نسبتی که لازم دارین .


موفق باشید

moein+
سه شنبه 08 فروردین 1391, 14:38 عصر
نمونه با XE2 و FireMonkey

برای تغییر میزان شفافیت هم میتوانید بایت مربط به کانال آلفا در رنگ ست شده را شفاف تر کنید و هم در دستور ترسیم متن با پارامتر Opacity کار کنید (0.0~1.0)

h00manb
سه شنبه 08 فروردین 1391, 17:41 عصر
برای چرخاندن متن باید از چه دستوری استفاده کرد؟