- جۇغلانما
- 2819
UID5258
تىزىملاتقان2012-1-4
ئاخىرقى قېتىم2015-2-15
توردا350 سائەت
ئالىي ئەزا

- نادىر
- 0
- جۇغلانما
- 2819
- ئاقچا
- 16

|
مەلۇم بىر پىروگىرامما تىلىنى ئۆگېنىپ بەلگىلىك سەۋىيەگە يەتكەندە ئۇ قانداقتۇر بۇرۇنقىدەك مۇرەككەپ نەرسە بولماستىن، بىرخىل ئويۇنچۇق، چالغۇ ئەسۋاب ياكى كۆڭۈل ئېچىش قورالىغا ئوخشاپ قالىدىكەن. كىچىك بالىلار ئويۇنچۇقى بىلەن كۆڭۈل ئاچقاندەك، سازچىلار چالغۇسى بىلەن ھەر - ھەر پەدىلەرگە چالغاندەك ، پىروگىراممىرمۇ مەلۇم تىل بىلەن ئۆز ئىددىيسىنى كومپىيۇتېردىن ئىبارەت بۇ ماشىنىغا سىڭدۈرۈپ، ئۆزگىچە ھوزۇرغا ئىرىشىدىكەن. ئۆزۈمنى ئالسام، بۇ ئالدىراش كۈنلەردە ھەر كۈنى ھېرىپ - چارچاپ كېلىپ كومپىيۇتېر ئالدىغا چۆكىمەن - دە. ئۆگىنىۋالغان كىچىككىنە بىلىمىمگە تايىنىپ كاللامغا كەلگەن نەرسىلەرنى ياساپ بېقىشقا ئۇرۇنىمەن.
شۇنداق قىلىپ بىرەر ھەپتىدەك ئېتىشىپ يۈرۈپ، يېڭىدىن ئۆگىنىۋاتقان #C تىلىدا مۇنۇ ئاددىي دېتالىمنى تۈزۈپ چىقتىم. بۇنىغۇ بىر مۇكەممەل دېتال دېگىلىمۇ بولمايدۇ، ئەمما مۇستەقىل تاماملاشقا يەنىلا ئاز بولمىغان كۈچ كېتىدۇ. تۆۋەندە مەزكۇر دېتالنى ۋە ئېچىش جەريانىنى بىرئاز تونۇشتۇرغاندىن كېيىن، ئەسلى كودىنى چۈشۈرۈشكە تەمىنلەيمەن. #C پىروگىراممىلىرىغا قىزىقىدىغان دوسىتلار چۈشۈرۈپ كۆرۈپ باقساڭلار بولىدۇ.
دېتال ئىقتىدارلىرى ھەل قىلىنمىغان مەسىلىلەر
بىر مەشىق ئەسىرى بولۇش سۈپىتى بىلەن نۇرغۇن يىتەرسىزلىكلەر مەۋجۇت، نۇرغۇن ئىقتىدارلىرى ئەڭ ئىپتىدائىي ھالەتتە ئەمەلگە ئاشۇرۇلغان. دېتالنىڭ تەپسىلىي ئىقتىدارلىرى تۆۋەندىكىدەك:
1. كۆرسىتىلگەن ھۆججەت قىسقۇچىسى ئىچىدىكى بارلىق رەسىمنى ئوقۇپ ئېلىپ، ئوڭ تەرەپ تىزىملىك سىتونىدا رەسىم نامى، رەسىم تىپى بويىچە تىزىپ بېرىدۇ.
2. تىزىلغان رەسىم ناملىرىنى تاللاش ئارقىلىق سول تەرەپتە رەسىملەرنى تىز كۆرۈشكە بولىدۇ. رەسىم تۈزىنى بىر چەككەندە رەسىم ئەسلى چوڭ - كىچىكلىكى بويىچە يېڭى كۆزنەكتە كۆرسىتىدۇ.
3. تاللىغان رەسىمگە نىسبەتەن نام ئكزگەرتىش، ئۆچۈرۈش، كۆپەيتىش، بېسىپ چىقىرىش، ئىكىران تەگلىكى بەلگىلەش، ھەرتەرەپكە چۆرۈش قاتارلىق مەشغۇلاتلارنى قىلىشقا بولىدۇ.
4. تاللانغان رەسىمگە بىرنەچچە خىل ئۈنۈم قوشۇش، ئېنىقلىق، يۇرۇقلۇق، چوڭ - كىچىكلىكىنى تەڭشەش ۋە قايتا ساقلاش قاتارلىق مەشغۇلاتلارنى قىلىشقا رەسىملەرنى ئاپتوماتىك ھالدا ئۆتكۈزۈپ قويۇشقا بولىدۇ.
5. كۆزنەك رايۇنىدىن ھەرقايسى قورالبالداق، ئۇچۇر رايۇنلىرىنى كۆرسېتىش - كۆرسەتمەسلىكنى تاللاشقا بولىدۇ.
6. باشقا ئىقتىدارلىرىنى چۈشۈرۈپ سىناپ باقساڭلار بايقىشىڭلار مۇمكىن....
ھەل قىلىنمىغان مەسىلىلەر:
1. دېتالنىڭ كۆرۈنمە يۈز لايىھەسى 0 نومۇرلۇق، يەنى ھېچقانداق "ھۆسۈن تۈزەش" ئۇستىسىغا كۆرسەتمىگەن.
2. ئىقتىدارلىرى ئاساسەن ئىپتىدائىي ھالەتتە، ئوخشاش تۈردىكى كاتتا - كاتتا دېتاللارنى ئىشلىتىپ كۆنگەنلەرنىڭ مىيىقىدا كۈلمىسىمۇ كۆڭلىدە كۈلىشى تۇرغانلا گەپ.
3. ئىكىران تەگلىكى بەلگىلەشتە پەقەت .bmp فورماتىدىكى رەسىمنىلا قوللايدۇ، باشقا تىپتىكىلىرىنى قىلمىدىم.
4. رەسىم چوڭ - كىچىكلىنى تەڭشەشتە ھېلىقىدە كېىسىپ ئالىدىغان، پار - پۇر تارتىپ تەڭشەيدىغان ئىقتىدارلىرى ھازىرچە سەپلەنمىدى... ۋەھەكازالار!
چۈشۈرگەندىن كېيىن بىرتەرەپ قىلىش ئۇسسۇللىرى:
1. ئەگەر كومپىيۇتىرىڭىزدا VisualStudio2010 دىن يۇقىرى نەشىرى بولسا ھۆججەتنى چۈشۈرگەندىن كېيىن VS بىلەن ئېچىپ، F5 نى بېسىپ ئىجرا قىلىپ كۆرسىڭىز بولىدۇ.
2. كومپىيۇتېرىڭىزدا VS يوق ئەھۋالدا PictureManage\PictureManage\bin\Debug موشۇ ئادرېس بويىچە ئېچىپ، PictureManage.exe ھۆججىتىنى ئىجرا قىلىپ كۆرسىڭىز بولىدۇ(بۇنىڭ ئۈچۈن كومپىيۇتىرىڭىزدا FrameWork3.0 دىن يۇقىرى نۇسخىسى بولىشى كېرەك، Win8/Win7 سېستىمىلاردا ئادەتتە قاچىلانغان بولىدۇ).
3. "ئۇمۇ يوق، بۇمۇ يوق، زورلىماڭلار قورساق توق" بولسا يۇقىرىدا تەمىنلىگەن كۆرۈنمە رەسىملىرىدىن كۆرۈۋالسىڭىز بولىدۇ.
سەمىمىي تىلەك: دېتالنىڭ ئەسلى كودى پەقەت ئۆگىنىش - ئالماشتۇرۇش مەقسىتىدە تارقىتىلدى. تەنقىدىي تەكلىپ - پىكىرلەرنى بېرىشىڭلارنى ئۈمۈد قىلىمەن. ئەمما بۇ دېتالنى خالىغانچە ئۆز نامىڭلاردا ئېلان قىلىۋالماسلىقىڭلارنى، شۇنداقلا سودا - سېتىق ساھەسىگە قالايمىقان ئىشلەتمەسلىكىڭلارنى ئۈمۈد قىلىمەن.
دېتال كۆرۈنمە يۈزلىرىدىن كۆرۈپ باقايلۇق
ئاخىرىدا بىر قىسىم كىلاسسىك كودلىرىنى كۆرۈپ باقايلى
1. "تەڭشەش" كونۇپكىسىنى باسقاندىن كېيىن تاللانغان رەسىمگە قارىتا تەڭشەش ئېلىپ بارغاندا رەسىم ئىنىقلىقىنى، يورۇقلۇقىنى، چوڭ - كىچىكلىكىنى تەڭشەش كودلىرى تۆۋەندىكىدەك:- public static Bitmap KiLighten(Bitmap b, int degree)//يورۇقلىقىنى تەڭشەش
- {
- if (b == null) //eger resim bolmisa quruq qimmet qayturidu
- {
- return null;
- }
- //ئەڭ چوڭ ۋە كىچىك قىممەت دائىرىسىنى بەلگىلەيمىز
- if (degree < -255) degree = -255; //-255 tin kichik bolsa -255 depla alsun
- if (degree > 255) degree = 255; // 255 tin iship ketkinini 255 depla alsun
- try
- {
- //رەسىمنىڭ كەڭلىك، ئىگىزلىكىنى جەزىملەيمىز
- int width = b.Width;
- int height = b.Height;
- int pix = 0;
- //LockBits arqiliq Bitmap ni CPU gha quluplaymiz
-
- BitmapData data = b.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
- unsafe
- {
- // *p ni saqlighuch adrisigha toghurlaymiz
- byte* p = (byte*)data.Scan0;// 8 خانىلىق مۇسبەت پۈتۈن سان
- int offset = data.Stride - width * 3;
- for (int y = 0; y < height; y++)
- {
- for (int x = 0; x < width; x++)
- {
- // بەلگىلەنگەن رايۇننىڭ رەسىم پىكىسىل قىممىتىنى بەلگىلەيمىز
- for (int i = 0; i < 3; i++)
- {
- pix = p[i] + degree;
- if (degree < 0) p[i] = (byte)Math.Max(0, pix);
- if (degree > 0) p[i] = (byte)Math.Min(255, pix);
- } // i
- p += 3;
- } // x
- p += offset;
- } // y
- }
- b.UnlockBits(data);//ئىچكى ساقلىغۇچتىكى قۇلۇپلانغان ھالىتىنى بىكار قىلىمىز
- return b;
- }
- catch
- {
- return null;
- }
- }
- public static Bitmap KiContrast(Bitmap b, int degree) //ئىنىقلىقىنى تەڭشەش
- {
- if (b == null)
- {
- return null;
- }
- if (degree < -100) degree = -100;
- if (degree > 100) degree = 100;
- try
- {
- double pixel = 0;
- double contrast = (100.0 + degree) / 100.0;
- contrast *= contrast;
- int width = b.Width;
- int height = b.Height;
- BitmapData data = b.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
- unsafe
- {
- byte* p = (byte*)data.Scan0;
- int offset = data.Stride - width * 3;
- for (int y = 0; y < height; y++)
- {
- for (int x = 0; x < width; x++)
- {
- // بەلگىلەنگەن رايۇننىڭ ئېنىقلىق پېكىسىل قىممىتىنى بىرتەرەپ قىلىش
- for (int i = 0; i < 3; i++)
- {
- pixel = ((p[i] / 255.0 - 0.5) * contrast + 0.5) * 255;
- if (pixel < 0) pixel = 0;
- if (pixel > 255) pixel = 255;
- p[i] = (byte)pixel;
- } // i
- p += 3;
- } // x
- p += offset;
- } // y
- }
- b.UnlockBits(data);
- return b;
- }
- catch
- {
- return null;
- }
- }
مەزمۇننى كۆچۈرۈۋېلىش 2. تەڭشەك -> ئۈنۈم قوشۇش ئىقتىدارىنى ئەمەلگە ئاشۇرۇش كودى.- private void tscbXG_SelectedIndexChanged(object sender, EventArgs e)
- {
- pictureBox2.Image = ig;
- string Ttype = tscbXG.Text.Trim();
- switch(Ttype)
- {
- case "ئويۇلما":
- try
- {
- Bitmap myBitmap;
- Image myImage = pictureBox2.Image;
- myBitmap = new Bitmap(myImage);
- for (int i = 0; i < myBitmap.Width - 1; i++)
- {
- for (int j = 0; j < myBitmap.Height - 1; j++)
- {
- Color Color1 = myBitmap.GetPixel(i, j);
- Color Color2 = myBitmap.GetPixel(i + 1, j + 1);
- int red = Math.Abs(Color1.R - Color2.R + 128); //oyulma unum chiqirish hisablash ipadisi
- int green = Math.Abs(Color1.G - Color2.G + 128);
- int blue = Math.Abs(Color1.B - Color2.B + 128);
- // رەڭ دائىرىسىنى بىرتەرەپ قىلىش
- if (red > 255) red = 255;
- if (red < 0) red = 0;
- if (green > 255) green = 255;
- if (green < 0) green = 0;
- if (blue > 255) blue = 255;
- if (blue < 0) blue = 0;
- myBitmap.SetPixel(i, j, Color.FromArgb(red, green, blue)); // oyulma unum funkisiyesini ishlitish
- }
- }
- pictureBox2.Image = myBitmap;
- }
- catch
- { }
- break;
- case "تاختاي":
- Graphics myGraphics = this.CreateGraphics();
- Bitmap myBitmap1 = new Bitmap(pictureBox2.Image);
- int myWidth, myHeight, m, n, iAvg, iPixel; // miqdarlargha iniqlima
- Color myColor, myNewColor;
- RectangleF myRect;
- myWidth = myBitmap1.Width;
- myHeight = myBitmap1.Height;
- myRect = new RectangleF(0, 0, myWidth, myHeight);
- Bitmap bitmap = myBitmap1.Clone(myRect, System.Drawing.Imaging.PixelFormat.DontCare); // resim chotkisi arqiliq asasliq rayunni belgiliwalimiz
- m = 0;
- while (m < myWidth - 1) // taxtay unumini chiqirish
- {
- n = 0;
- while (n < myHeight - 1)
- {
- myColor = bitmap.GetPixel(m, n);
- iAvg = (myColor.R + myColor.G + myColor.B) / 3;
- iPixel = 0;
- if (iAvg >= 128)
- iPixel = 255;
- else
- iPixel = 0;
- myNewColor = Color.FromArgb(255, iPixel, iPixel, iPixel);
- bitmap.SetPixel(m, n, myNewColor);
- n = n + 1;
- }
- m = m + 1;
- }
- myGraphics.Clear(Color.WhiteSmoke);
- myGraphics.DrawImage(bitmap, new Rectangle(0, 0, myWidth, myHeight));
- pictureBox2.Image = bitmap;
- break;
- case "لىنتا":
- int myh = pictureBox2.Image.Height;
- int myw = pictureBox2.Image.Width;
- Bitmap bitp = new Bitmap(myw,myh);
- Bitmap mybitmap = (Bitmap)pictureBox2.Image;
- Color Mpixel;
- for (int mx = 1; mx < myw; mx++)
- {
- for (int my = 1; my < myh; my++)
- {
- int r, g, b;
- Mpixel = mybitmap.GetPixel(mx,my);
- r = 255 - Mpixel.R;
- g = 255 - Mpixel.G;
- b = 255 - Mpixel.B;
- bitp.SetPixel(mx,my,Color.FromArgb(r,g,b));
- }
- }
- pictureBox2.Image = bitp;
- break;
- case "تۇتۇق":
- int wh = pictureBox2.Image.Height;
- int ww = pictureBox2.Image.Width;
- Bitmap wbitmap = new Bitmap(ww,wh);
- Bitmap wmybitmap = (Bitmap)pictureBox2.Image;
- Color wpixel;
- for (int wx = 1; wx < ww; wx++)
- {
- for (int wy = 1; wy < wh; wy++)
- {
- Random wmyrandom = new Random();
- int wk = wmyrandom.Next(123456);
- int wdx = wx + wk % 19;
- int wdy = wy + wk % 19;
- if (wdx >= ww)
- {
- wdx = ww - 1;
- }
- if (wdy >= wh)
- {
- wdy = wh - 1;
- }
- wpixel = wmybitmap.GetPixel(wdx,wdy);
- wbitmap.SetPixel(wx,wy,wpixel);
- }
- }
- pictureBox2.Image = wbitmap;
- break;
- }
- }
مەزمۇننى كۆچۈرۈۋېلىش ئەسلى كودىنى چۈشۈرۈش: چۈشۈرۈش ئېلىش كودى: q5uw |
باھالاش
-
باھا خاتىرىسى
|