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

نام تاپیک: مشکل در انتساب بیت مپ به پراپرتی کامپوننت؟

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    990

    مشکل در انتساب بیت مپ به پراپرتی کامپوننت؟

    سلام
    (مثال این تاپیک رو جایگزین و یک کم ساده تر کردم)
    من دارم یه کامپوننت دکمه طراحی می کنم که یه بیت مپ بهش میدم که بیت مپ رو دو تکه میکنه و مثل دکمه Play/Pause برای دو حالت استفاده می کنه.
    وقتی کامپوننت ساخته میشه هم یه ترسیم توی Canvas بیت مپ انجام میده.
    نمی دونم چرا وقتی در زمان طراحی بیت مپ رو بهش آدرس میدم، درست عمل می کنه؛ اما در زمان اجرا اینگار هیچ بیت مپی به پراپرتی پاس داده نشده و همون تصویر اولیه رو نشون میده!
    لطفا شما هم یه نگاهی بکنین:

      TTwoStatusBut= class(TGraphicControl)
    Private
    FBmp : TBitmap;
    Bmp1,Bmp2:TBitmap;
    Status:Byte;//0=Up;1=Over;2=Down;
    procedure SetBmp(B:TBitmap);
    procedure Click;OverRide;
    public
    constructor Create(AOwner: TComponent);Override;
    procedure Paint;OverRide;
    Published
    property ShowHint;
    property Anchors;
    property Bmp:TBitmap read FBmp write SetBmp;
    property OnClick;
    end;
    .
    .
    implementation
    .
    .
    { T2StatusBmpBut }

    procedure TTwoStatusBut.Click;
    begin
    Status:=1-Status;
    Invalidate;
    inherited;
    end;
    constructor TTwoStatusBut.Create(AOwner: TComponent);
    begin
    inherited Create(AOwner);
    SetParent(TWinControl(AOwner));
    Status:=0;
    FBmp:=TBitmap.Create;
    FBmp.PixelFormat:=pf24Bit;
    FBmp.Width:=40;
    FBmp.Height:=20;
    FBmp.Canvas.Brush.Color:=clBlack;
    FBmp.Canvas.FillRect(FBmp.Canvas.ClipRect);
    FBmp.Canvas.Pen.Color:=clBlue;
    FBmp.Canvas.Brush.Color:=clWhite;
    FBmp.Canvas.Ellipse(0,0,20,20);
    FBmp.Canvas.Ellipse(20,0,40,20);
    FBmp.Canvas.Pen.Color:=clGreen;
    FBmp.Canvas.Brush.Color:=clLime;
    FBmp.Canvas.Polygon([Point(7,5),Point(14,10),Point(7,15)]);
    FBmp.Canvas.Pen.Color:=clBlue;
    FBmp.Canvas.Brush.Color:=clAqua;
    FBmp.Canvas.Rectangle(25,5,29,15);
    FBmp.Canvas.Rectangle(31,5,35,15);
    Bmp1:=TBitmap.Create;
    Bmp2:=TBitmap.Create;
    SetBmp(FBmp);
    end;
    procedure TTwoStatusBut.Paint;
    begin
    If Status=0 then
    Canvas.Draw(0,0,Bmp1)
    Else If Status=1 then
    Canvas.Draw(0,0,Bmp2);
    inherited;
    end;
    procedure TTwoStatusBut.SetBmp(B: TBitmap);
    Var
    W2:Word;
    begin
    FBmp.Assign(B);
    W2:=B.Width Div 2;
    Width:=W2;
    Height:=B.Height;
    Bmp1.Width:=W2;
    Bmp1.Height:=B.Height;
    Bmp1.PixelFormat:=pf24Bit;
    Bmp1.Transparent := True;
    Bmp1.TransparentMode:= tmAuto;
    Bmp2.Assign(Bmp1);
    Bmp1.Canvas.CopyRect(Bmp1.Canvas.ClipRect
    ,B.Canvas,Rect(0,0,W2,B.Height));
    Bmp2.Canvas.CopyRect(Bmp2.Canvas.ClipRect
    ,B.Canvas,Rect(W2,0,W2*2,B.Height));
    Invalidate;
    end;


    در ابتدای پروسیجر SetBmp با SaveToFile بررسی کردم در زمان اجرا چیزی که به پراپرتی میده همون تصویر اولیه هستش نه بیت مپی که در زمان طراحی بهش مسیر دادم!
    آخرین ویرایش به وسیله mbshareat : یک شنبه 26 شهریور 1391 در 22:52 عصر

تاپیک های مشابه

  1. سوال: مشکل کانکشن بانک اطلاعات در ویندوز 64 بیت
    نوشته شده توسط Hossis در بخش VB.NET
    پاسخ: 4
    آخرین پست: دوشنبه 24 مهر 1391, 21:22 عصر
  2. سوال: مشکل در ارسال ایمیل به gmail در ویندوزهای 64 بیت
    نوشته شده توسط Mask در بخش توسعه نرم افزارهای تحت شبکه
    پاسخ: 4
    آخرین پست: شنبه 17 دی 1390, 20:04 عصر
  3. سوال: مشکل با کامپوننت؟
    نوشته شده توسط vahidnajafi در بخش C#‎‎
    پاسخ: 2
    آخرین پست: دوشنبه 21 دی 1388, 11:45 صبح
  4. مشکل در انتساب عدد تصادفی به دست آمده به یک متغیر
    نوشته شده توسط hamhik در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: چهارشنبه 29 فروردین 1386, 18:53 عصر
  5. مشکل در انتساب چند شئ به آرایه بعد از تعریف
    نوشته شده توسط Chabok در بخش VB.NET
    پاسخ: 2
    آخرین پست: سه شنبه 24 مرداد 1385, 17:32 عصر

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

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