اطلاعیه

Collapse
No announcement yet.

دسترسی به Bitmap در تابع دلخواه؟

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    دسترسی به Bitmap در تابع دلخواه؟

    سلام
    یه تابع نوشتم که توش از عکس استفاده میکنه منتها وقتی تو خودش Bitmap رو به صورت
    Bitmap BMP = new Bitmap(pictureBox1.Image);

    تعریف میکنم تو اجرا میگه چیزی توی BMP وجود نداره
    Bitmap رو هم هر کار میکنم نمیتونم global تعریف کنم
    چی کار باید بکنم؟
    با تشکر

    #2
    پاسخ : دسترسی به Bitmap در تابع دلخواه؟

    زبان برنامه نویسی چی هست؟
    ویژوال بیسیک؟
    هميشه به ياد خدا باش !

    دیدگاه


      #3
      پاسخ : دسترسی به Bitmap در تابع دلخواه؟

      نوشته اصلی توسط DDR3
      زبان برنامه نویسی چی هست؟
      ویژوال بیسیک؟
      فکر کنم از انجمن معلوم باشه :rolleyes:
      C#

      دیدگاه


        #4
        پاسخ : دسترسی به Bitmap در تابع دلخواه؟

        آحتمالا تعریف سراسری شما رو به اشتباه انداخته یا جایی که استفاده میکنید نحوه استفاده از bmp باید اصلاح بشه چون خود کد مشکلی نداره ..
        ضمنا تو دانت نت متغیر سراسری به اون مفهوم که مثلا تو ویژوال بیسیک داشتیم نداریم .. یک متغییر حداکثر میتونه در کلاس خودش متعبر باشه در بقیه موارد ناچارا باید متغیر رو پاس بدیم (مثلا بین دو form)..
        زندگی پر ز وجود است ولی ..
        ما چه را می خواهیم چه را می جوییم که لب چشمه ی امید اینچنین نا امیدانه به سرابی تلخ مینگریم...

        دیدگاه


          #5
          پاسخ : دسترسی به Bitmap در تابع دلخواه؟

          نوشته اصلی توسط afceaglee2013
          آحتمالا تعریف سراسری شما رو به اشتباه انداخته یا جایی که استفاده میکنید نحوه استفاده از bmp باید اصلاح بشه چون خود کد مشکلی نداره ..
          ضمنا تو دانت نت متغیر سراسری به اون مفهوم که مثلا تو ویژوال بیسیک داشتیم نداریم .. یک متغییر حداکثر میتونه در کلاس خودش متعبر باشه در بقیه موارد ناچارا باید متغیر رو پاس بدیم (مثلا بین دو form)..
          آخرش باید چی بشه؟
          کلا امکان استفاده از bitmap تو تابعی که نوشتیم نیست؟

          دیدگاه


            #6
            پاسخ : دسترسی به Bitmap در تابع دلخواه؟

            البته که هست ..
            لطفا کد تابع رو بذارید تا عرض کنم .. احتمالا خود کد مشکل داشته باشه
            زندگی پر ز وجود است ولی ..
            ما چه را می خواهیم چه را می جوییم که لب چشمه ی امید اینچنین نا امیدانه به سرابی تلخ مینگریم...

            دیدگاه


              #7
              پاسخ : دسترسی به Bitmap در تابع دلخواه؟


              کد:
              private void filter(void)
                  {
                    int r,b,g,m;
                    Color col;
                    Bitmap BMP = new Bitmap(pictureBox1.Image);
                    for (int i = 0 ; i < Int32.Parse(BMP.Width.ToString()); i++ )
                      for (int j = 0 ; j < Int32.Parse(BMP.Height.ToString()); j++){
                        col = BMP.GetPixel(i, j);
                        r = col.R;
                        g = col.G;
                        b = col.B;
                        BMP.SetPixel(i,j,Color.FromArgb(r/3,b/3,g/3));
                          }
                    pictureBox1.Image = BMP;
                  }

              والا کد که مشکلی فکر نکنم داشته باشه اصلش
              اومدم تبدیل به تابعش کنم اینجوری میشه
              مثل اینکه picturebox توی توابعی که مینویسیم قابل دسترسی نیست و فقط تو توابع اونت دکمه ها و ... میشه ازش استفاده کرد

              دیدگاه


                #8
                پاسخ : دسترسی به Bitmap در تابع دلخواه؟

                کدی که مشکل داشت همین بود؟ متن ارور چی هست؟
                در هر صورت این کد بدون مشکل اجرا میشه رنگ picturebox هم عوض میشه .. هم در تابع دکمه و هم تابعی که خودم ایجاد کردم
                شما تابع رو کجا تعریف میکنید ؟ داخل کلاس form1 ؟ یا خارج از اون؟
                picturebox فقط داخل همین فرم معتبر هست

                زندگی پر ز وجود است ولی ..
                ما چه را می خواهیم چه را می جوییم که لب چشمه ی امید اینچنین نا امیدانه به سرابی تلخ مینگریم...

                دیدگاه


                  #9
                  پاسخ : دسترسی به Bitmap در تابع دلخواه؟

                  نوشته اصلی توسط afceaglee2013
                  کدی که مشکل داشت همین بود؟ متن ارور چی هست؟
                  در هر صورت این کد بدون مشکل اجرا میشه رنگ picturebox هم عوض میشه .. هم در تابع دکمه و هم تابعی که خودم ایجاد کردم
                  شما تابع رو کجا تعریف میکنید ؟ داخل کلاس form1 ؟ یا خارج از اون؟
                  picturebox فقط داخل همین فرم معتبر هست
                  عکسی که تو picturebox هست اینجا نمیاد BMP خالیه بعد تو اجرا ارور میده به همین خاطر

                  دیدگاه


                    #10
                    پاسخ : دسترسی به Bitmap در تابع دلخواه؟

                    نوشته اصلی توسط شهریار رجب زاده
                    عکسی که تو picturebox هست اینجا نمیاد BMP خالیه بعد تو اجرا ارور میده به همین خاطر
                    لطفا کل پروژه رو بفرستید ..
                    زندگی پر ز وجود است ولی ..
                    ما چه را می خواهیم چه را می جوییم که لب چشمه ی امید اینچنین نا امیدانه به سرابی تلخ مینگریم...

                    دیدگاه


                      #11
                      پاسخ : دسترسی به Bitmap در تابع دلخواه؟

                      نوشته اصلی توسط afceaglee2013
                      لطفا کل پروژه رو بفرستید ..
                      اینجاست
                      راستش میخوام تو تابع روی یه سری از پیکسل ها کاری انجام بده و نتیجشو برگردونه که نمیتونم این کار رو بکنم

                      دیدگاه


                        #12
                        پاسخ : دسترسی به Bitmap در تابع دلخواه؟

                        کد:
                            public int filter(int ii, int jj, ref Bitmap BMP1)
                            {
                              Color col1;
                              int r, g, b;
                              col1 = BMP1.GetPixel(ii, jj);
                              r = col1.R;
                              g = col1.G;
                              b = col1.B;
                              return (r + g + b) / 3;
                            }
                        
                            private void button1_Click(object sender, EventArgs e)
                            {
                              Bitmap BMP = new Bitmap(pictureBox1.Image);
                              int a,i,j;
                              for (i = 0; i < BMP.Width; i++)
                                for (j = 0; j < BMP.Height; j++)
                                {
                                  a = filter(i, j,ref BMP );
                                  BMP.SetPixel(i, j, Color.FromArgb(a, a, a));
                                }
                              pictureBox1.Image =new Bitmap( BMP);
                            }
                        با این تغییرات در سیستم من برنامه کار کرد .. (تصویر سیاه و سفید شد)


                        در سی شارپ بهتره به جای
                        pictureBox1.Image =BMP;
                        اینطور بنویسید
                        pictureBox1.Image =new Bitmap( BMP);
                        متغییر هایی از نوع bitmap رو نمیتونیم با استفاده از "=" کپی کنیم .. در صورت استفاده از = اگر در جایی از برنامه متغییر bmp تغییر کند picturebox1 هم تغییر خواهد کرد (البته در این برنامه مشکلی پیش نمیاد)



                        --
                        یادم رفت بگم میتونید متغییر bmp رو هم در بدنه کلاس form1 تعریف کنید .. اینطوری مجبور نیستید bmp رو به تابع filter به عنوان ورودی بفرستید.

                        کد:
                            
                            Bitmap BMP;
                            public int filter(int ii, int jj)
                            {
                              Color col1;
                              int r, g, b;
                              col1 = BMP.GetPixel(ii, jj);
                              r = col1.R;
                              g = col1.G;
                              b = col1.B;
                              return (r + g + b) / 3;
                            }
                            
                            private void button1_Click(object sender, EventArgs e)
                            {
                              BMP = new Bitmap(pictureBox1.Image);
                              int a,i,j;
                              for (i = 0; i < BMP.Width; i++)
                                for (j = 0; j < BMP.Height; j++)
                                {
                                  a = filter(i, j);
                                  BMP.SetPixel(i, j, Color.FromArgb(a, a, a));
                                }
                              pictureBox1.Image =new Bitmap( BMP);
                              
                            }
                        زندگی پر ز وجود است ولی ..
                        ما چه را می خواهیم چه را می جوییم که لب چشمه ی امید اینچنین نا امیدانه به سرابی تلخ مینگریم...

                        دیدگاه

                        لطفا صبر کنید...
                        X