Autor Beitrag
fatiheminsahin
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 28.08.14 16:24 
Ich bin ein neuling in c#.

ich habe folgendes Problem.

Ich habe ein Formular, bei der ich ein bild angezeigt bekomme (nach einem OpenfileDialog).

Dieses bild soll nun um einen Pixel verändert und wieder dort angezeigt werden.

Ich bin echt verrückt geworden in der zwischenzeit. Bitte hilft mir dieses problem zu lösen.

Ich stelle mir sowas vor:

ausblenden C#-Quelltext
1:
Image.SetPixel(100,150,240,248,255);					


100 steht für die x position des bildes
150 für die y position des bildes
240,248,255 ist der rgb farbcode der ersetzt werden soll.

aber sowas gibt es nicht. bitte helfen bitte bitte bitte... morgen ist meine abgabe!

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 28.08.14 16:28 
Hallo und :welcome:,

die Klasse WriteableBitmap müsste dir da weiterhelfen (schau dir die Methode DrawPixel im Beispiel an).
fatiheminsahin Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 28.08.14 16:35 
danke ich habe es mir angeschaut, aber ich brauche es nicht so kompliziert, ich will nicht mit der Maus über das bild gehen müssen um die Pixel auszulesen. geht das nicht einfacher?

Das kann doch nicht so kompliziert sein... das muss doch viel einfacher gehen oder sehe ich es total falsch??
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 28.08.14 18:35 
Du kannst natürlich auch die Klasse Bitmap aus dem System.Drawing-Namensbereich benutzen.
Was für einen Datentyp hat denn dein Image?
fatiheminsahin Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 28.08.14 20:42 
ich versteh leider deine Antwort nicht, wie soll ich es mit System.Drawing machen?
Hier ist mein code.


ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
573:
574:
575:
576:
577:
578:
579:
580:
581:
582:
583:
584:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Drawing;
using System.Drawing.Imaging;
//using System.Windows.Forms;
using Microsoft.Win32;



namespace Main
{
    /// <summary>
    /// Interaktionslogik für Format_1920x720.xaml
    /// </summary>
    /// 
            

    public partial class Format_1920x720 : Window
    {
        // Bild Laden Button
        string filename;

        // Pixel anvisieren Button
        int[] Pixelpos_1 = new int[2];
        int[] Pixelpos_2 = new int[2];
        int[] Pixelpos_3 = new int[2];
        int[] Pixelpos_4 = new int[2];
        int[] Pixelpos_5 = new int[2];
        int[] Pixelpos_6 = new int[2];
        int[] Pixelpos_7 = new int[2];
        int[] Pixelpos_8 = new int[2];
        int[] Pixelpos_9 = new int[2];
        int[] Pixelpos_10 = new int[2];
        int[] Pixelpos_11 = new int[2];
        int[] Pixelpos_12 = new int[2];

        // RGB-Button
        int[] RGB_Pixel = new int[12];

        // Kontrollvariable Bild geladen oder nicht
        int bildgeladen = 0;

        // Kontrollvariable Pixelposition übernommen oder nicht
        int pixpos = 0;

        // Counter
        int bildZaehler = 0;

        // Kontrollvariable zum einmaligen Speichern
        int einmalspeichern = 0;

        public Format_1920x720()
        {
            InitializeComponent();
        }

        
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            ImageFileHelper ifh = new ImageFileHelper();
            BildLaden.Source = new BitmapImage(ifh.Open());
            bildgeladen = 1;
            lab1.Visibility = Visibility.Hidden;
            lab2.Visibility = Visibility.Hidden;
            oeffnenButton.Visibility = Visibility.Hidden;            
        }

     

        private void AddPicButton_Click(object sender, RoutedEventArgs e)
        {
            if (bildgeladen == 1)
            { 
                if(!(   String.IsNullOrEmpty(RGB1.Text) ||
                        String.IsNullOrEmpty(RGB1.Text) ||
                        String.IsNullOrEmpty(RGB2.Text) ||
                        String.IsNullOrEmpty(RGB3.Text) ||
                        String.IsNullOrEmpty(RGB4.Text) ||
                        String.IsNullOrEmpty(RGB5.Text) ||
                        String.IsNullOrEmpty(RGB6.Text) ||
                        String.IsNullOrEmpty(RGB7.Text) ||
                        String.IsNullOrEmpty(RGB8.Text) ||
                        String.IsNullOrEmpty(RGB10.Text) ||
                        String.IsNullOrEmpty(RGB11.Text) ||
                        String.IsNullOrEmpty(RGB12.Text)    ))
                    { 

                        RGB_Pixel[0] = Convert.ToInt32(RGB1.Text);
                        RGB_Pixel[1] = Convert.ToInt32(RGB2.Text);
                        RGB_Pixel[2] = Convert.ToInt32(RGB3.Text);
                        RGB_Pixel[3] = Convert.ToInt32(RGB4.Text);
                        RGB_Pixel[4] = Convert.ToInt32(RGB5.Text);
                        RGB_Pixel[5] = Convert.ToInt32(RGB6.Text);
                        RGB_Pixel[6] = Convert.ToInt32(RGB7.Text);
                        RGB_Pixel[7] = Convert.ToInt32(RGB8.Text);
                        RGB_Pixel[8] = Convert.ToInt32(RGB9.Text);
                        RGB_Pixel[9] = Convert.ToInt32(RGB10.Text);
                        RGB_Pixel[10] = Convert.ToInt32(RGB11.Text);
                        RGB_Pixel[11] = Convert.ToInt32(RGB12.Text);

                        
                    // Bildpixel manipulieren  
                    //------------------------------------


                        // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! HIER MUSS DER CODE REIN !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                        // Das Bild datentyp ist vom typ Image und das datenformat des bildes ist bmp
              
                    //------------------------------------



                    // Bild abspeichern!
                        ImageFileHelper ifh = new ImageFileHelper();
                        ifh.Save(BildLaden.Source as BitmapSource);
                        bildZaehler++;
                        
                        //neues bild in formualr laden
                        BildLaden.Source = new BitmapImage(new Uri("C:\\Users\\sahifat\\Desktop\\logo1.png"));
                    
                        

                }
                else
                    { 
                        System.Windows.MessageBox.Show("Bitte ausnahmslos alle 12 Pixelfarbwerte angeben!");
                    }
            }
            else
                {    
                    System.Windows.MessageBox.Show("Bitte Bild zuerst laden!");
                }


            

        }

        private void VidButton_Click(object sender, RoutedEventArgs e)
        {
            
        }

        // Pixel anvisieren
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
        
            if ( !( String.IsNullOrEmpty(Pixel11.Text) ||  
                    String.IsNullOrEmpty(Pixel12.Text) ||
                    String.IsNullOrEmpty(Pixel21.Text) ||
                    String.IsNullOrEmpty(Pixel22.Text) ||
                    String.IsNullOrEmpty(Pixel31.Text) ||
                    String.IsNullOrEmpty(Pixel32.Text) ||
                    String.IsNullOrEmpty(Pixel41.Text) ||
                    String.IsNullOrEmpty(Pixel42.Text) ||
                    String.IsNullOrEmpty(Pixel51.Text) ||
                    String.IsNullOrEmpty(Pixel52.Text) ||
                    String.IsNullOrEmpty(Pixel61.Text) ||
                    String.IsNullOrEmpty(Pixel62.Text) ||
                    String.IsNullOrEmpty(Pixel71.Text) ||
                    String.IsNullOrEmpty(Pixel72.Text) ||
                    String.IsNullOrEmpty(Pixel81.Text) ||
                    String.IsNullOrEmpty(Pixel82.Text) ||
                    String.IsNullOrEmpty(Pixel91.Text) ||
                    String.IsNullOrEmpty(Pixel92.Text) ||
                    String.IsNullOrEmpty(Pixel101.Text) ||
                    String.IsNullOrEmpty(Pixel102.Text) ||
                    String.IsNullOrEmpty(Pixel111.Text) ||
                    String.IsNullOrEmpty(Pixel112.Text) ||
                    String.IsNullOrEmpty(Pixel121.Text) ||
                    String.IsNullOrEmpty(Pixel122.Text)
                 ))     
            {
                Pixelpos_1[0] = Convert.ToInt32(Pixel11.Text);
                Pixelpos_1[1] = Convert.ToInt32(Pixel12.Text);

                Pixelpos_2[0] = Convert.ToInt32(Pixel21.Text);
                Pixelpos_2[1] = Convert.ToInt32(Pixel22.Text);

                Pixelpos_3[0] = Convert.ToInt32(Pixel31.Text);
                Pixelpos_3[1] = Convert.ToInt32(Pixel32.Text);

                Pixelpos_4[0] = Convert.ToInt32(Pixel41.Text);
                Pixelpos_4[1] = Convert.ToInt32(Pixel42.Text);

                Pixelpos_5[0] = Convert.ToInt32(Pixel51.Text);
                Pixelpos_5[1] = Convert.ToInt32(Pixel52.Text);

                Pixelpos_6[0] = Convert.ToInt32(Pixel61.Text);
                Pixelpos_6[1] = Convert.ToInt32(Pixel62.Text);

                Pixelpos_7[0] = Convert.ToInt32(Pixel71.Text);
                Pixelpos_7[1] = Convert.ToInt32(Pixel72.Text);

                Pixelpos_8[0] = Convert.ToInt32(Pixel81.Text);
                Pixelpos_8[1] = Convert.ToInt32(Pixel82.Text);

                Pixelpos_9[0] = Convert.ToInt32(Pixel91.Text);
                Pixelpos_9[1] = Convert.ToInt32(Pixel92.Text);

                Pixelpos_10[0] = Convert.ToInt32(Pixel101.Text);
                Pixelpos_10[1] = Convert.ToInt32(Pixel102.Text);

                Pixelpos_11[0] = Convert.ToInt32(Pixel111.Text);
                Pixelpos_11[1] = Convert.ToInt32(Pixel112.Text);

                Pixelpos_12[0] = Convert.ToInt32(Pixel121.Text);
                Pixelpos_12[1] = Convert.ToInt32(Pixel122.Text);

                System.Windows.MessageBox.Show("Sie haben folgende Pixel anvisiert:" + Environment.NewLine + Environment.NewLine +
                                "          Pixel 01:  P01[" + Convert.ToString(Pixelpos_1[0]) + "|" + Convert.ToString(Pixelpos_1[1]) + "]" + Environment.NewLine +
                                "          Pixel 02:  P02[" + Convert.ToString(Pixelpos_2[0]) + "|" + Convert.ToString(Pixelpos_2[1]) + "]" + Environment.NewLine +
                                "          Pixel 03:  P03[" + Convert.ToString(Pixelpos_3[0]) + "|" + Convert.ToString(Pixelpos_3[1]) + "]" + Environment.NewLine +
                                "          Pixel 04:  P04[" + Convert.ToString(Pixelpos_4[0]) + "|" + Convert.ToString(Pixelpos_4[1]) + "]" + Environment.NewLine +
                                "          Pixel 05:  P05[" + Convert.ToString(Pixelpos_5[0]) + "|" + Convert.ToString(Pixelpos_5[1]) + "]" + Environment.NewLine +
                                "          Pixel 06:  P06[" + Convert.ToString(Pixelpos_6[0]) + "|" + Convert.ToString(Pixelpos_6[1]) + "]" + Environment.NewLine +
                                "          Pixel 07:  P07[" + Convert.ToString(Pixelpos_7[0]) + "|" + Convert.ToString(Pixelpos_7[1]) + "]" + Environment.NewLine +
                                "          Pixel 08:  P08[" + Convert.ToString(Pixelpos_8[0]) + "|" + Convert.ToString(Pixelpos_8[1]) + "]" + Environment.NewLine +
                                "          Pixel 09:  P09[" + Convert.ToString(Pixelpos_9[0]) + "|" + Convert.ToString(Pixelpos_9[1]) + "]" + Environment.NewLine +
                                "          Pixel 10:  P10[" + Convert.ToString(Pixelpos_10[0]) + "|" + Convert.ToString(Pixelpos_10[1]) + "]" + Environment.NewLine +
                                "          Pixel 11:  P11[" + Convert.ToString(Pixelpos_11[0]) + "|" + Convert.ToString(Pixelpos_11[1]) + "]" + Environment.NewLine +
                                "          Pixel 12:  P12[" + Convert.ToString(Pixelpos_12[0]) + "|" + Convert.ToString(Pixelpos_12[1]) + "]" + Environment.NewLine 
                                
                                ) ;

                pixpos = 1;
            }
            else
                System.Windows.MessageBox.Show("Bitte alle 12 Pixelpositionen angeben!");
            
        }
    }



    /// <summary>
    /// Stellt Methoden zum speichern und Öffnen von Bilddateien bereit.
    /// </summary>
    public sealed class ImageFileHelper
    {
        /// <summary>
        /// Erstellt eine neue Instanz der <see cref="ImageFileHelper"/>-Klasse.
        /// </summary>
        public ImageFileHelper()
        {
            this.AllowedExtensions = new List<ImageFileExtensions>();
        }

        /// <summary>
        /// Ruft das Ausgangsverzeichnis der Datei-Dialoge ab oder legt dieses fest.
        /// </summary>
        public string InitialDirectory { get; set; }
        /// <summary>
        /// Ruft den Standardmäßigen Dateinamen ab oder legt diesen fest.
        /// </summary>
        public string InitialFileName { get; set; }
        /// <summary>
        /// Ruft die verfügbaren Dateierweiterungen ab oder legt diese fest.
        /// </summary>
        public List<ImageFileExtensions> AllowedExtensions { get; set; }
        /// <summary>
        /// Ruft Metainformationen über ein zu speicherndes Bild ab oder legt diese fest.
        /// </summary>
        public BitmapMetadata Metadata { get; set; }
        /// <summary>
        /// Ruft die Farbpalette über ein zu speicherndes Bild ab oder legt dieses fest.
        /// </summary>
        public BitmapPalette Palette { get; set; }
        /// <summary>
        /// Ruft das Vorschaubild einer zu speichernden Datei ab oder legt diese fest.
        /// </summary>
        public BitmapSource Thumbnail { get; set; }

        /// <summary>
        /// Zeigt dem Benutzer einen Öffnen-Dialog an und gibt den ausgewählten Dateinamen zurück.
        /// </summary>
        /// <returns>Der vom Benutzer ausgewählte Dateiname. Wenn der Benutzer den Vorgang abbricht, dann wird <c>null</c> zurück gegeben.</returns>
        public Uri Open()
        {
            return Open(GetOFD(false));
        }

        /// <summary>
        /// Zeigt dem Benutzer einen Öffnen-Dialog an und gibt die ausgewählten Dateinamen zurück.
        /// </summary>
        /// <returns>Die vom Benutzer ausgewählte Dateinamen. Wenn der Benutzer den Vorgang abbricht, dann wird <c>null</c> zurück gegeben.</returns>
        public IEnumerable<Uri> OpenMultiple()
        {
            return OpenMultiple(GetOFD(true));
        }

        /// <summary>
        /// Zeigt dem Benutzer einen Speichern-Dialog an und speichert das angegebene Bild an dem ausgewählten Ort.
        /// </summary>
        /// <param name="image">Das zu speichernde Bild.</param>
        /// <returns><c>true</c> wenn das Bild erfolgreich gespeichert wurde. Sollte der Benutzer den Vorgang abgebroch haben, dann wird <c>false</c> zurück gegeben.</returns>

        public bool Save(BitmapSource image)
        {
            return Save(image, GetSFD());
        }
        /// <summary>
        /// Zeigt dem Benutzer einen Speichern-Dialog an und gibt den ausgewählten Pfad zurück.
        /// </summary>
        /// <returns>Der vom Benutzer ausgewählte Pfad. Sollte der Benutzer den Vorgang abgebroch haben, dann wird <c>null</c> zurück gegeben.</returns>
        public string Save()
        {

            var sfd = GetSFD();

            if (sfd.ShowDialog() == true)
                return sfd.FileName;
            else
                return null;
        }

        /// <summary>
        /// Wird ausgelöst, wenn der Benutzer eine Qualitätsstufe für das zu speichernde Bild auswählen kann.
        /// </summary>
        public event EventHandler<QualitiyRequiredEventArgs> QualitiyRequired;

        Uri Open(OpenFileDialog ofd)
        {
            if (ofd.ShowDialog() == true)
            {
                return new Uri(ofd.FileName, UriKind.RelativeOrAbsolute);
            }
            else
                return null;
        }
        IEnumerable<Uri> OpenMultiple(OpenFileDialog ofd)
        {
            if (ofd.ShowDialog() == true)
            {
                foreach (var file in ofd.FileNames)
                    yield return new Uri(ofd.FileName, UriKind.RelativeOrAbsolute);
            }
        }
        bool Save(BitmapSource image, SaveFileDialog sfd)
        {
            if (sfd.ShowDialog() == true)
            {
                var enc = GetEncoder(image, sfd);
                using (Stream sw = new FileStream(sfd.FileName, FileMode.Create))
                {
                    enc.Save(sw);
                }
                return true;
            }
            return false;
        }

        private BitmapEncoder GetEncoder(BitmapSource image, SaveFileDialog sfd)
        {
            BitmapEncoder enc = null;
            switch (sfd.FileName.ToLower().Split('.').Last())
            {
                case "png":
                    enc = new PngBitmapEncoder();
                    break;
                case "jpg":
                case "jpeg":
                    enc = new JpegBitmapEncoder()
                    {
                        QualityLevel = GetQualitiy(ImageFileExtensions.JPG),

                    };
                    break;
                case "bmp":
                case "dif":
                    enc = new BmpBitmapEncoder();
                    break;
                case "tif":
                case "tiff":
                    enc = new TiffBitmapEncoder();
                    break;
                case "gif":
                    enc = new GifBitmapEncoder();
                    break;
                case "wmp":
                    enc = new WmpBitmapEncoder()
                    {
                        QualityLevel = GetQualitiy(ImageFileExtensions.WMP),
                    };
                    break;
                default:
                    return null;
            }
            if (this.Thumbnail != null)
                enc.Thumbnail = this.Thumbnail;
            if (this.Palette != null)
                enc.Palette = this.Palette;
            if (this.Metadata != null)
                enc.Metadata = this.Metadata;
            enc.Frames.Add(BitmapFrame.Create(image));

            return enc;
        }

        private byte GetQualitiy(ImageFileExtensions imageType)
        {
            var evt = this.QualitiyRequired;
            if (evt != null)
            {
                QualitiyRequiredEventArgs e = null;
                switch (imageType)
                {
                    case ImageFileExtensions.JPG:
                        e = new QualitiyRequiredEventArgs(110094, imageType);
                        break;
                    case ImageFileExtensions.WMP:
                        e = new QualitiyRequiredEventArgs(12551, imageType);
                        break;
                    default:
                        throw new ArgumentOutOfRangeException();
                }
                evt(this, e);
                return e.Quality;
            }
            return 94;
        }

        #region create FileDialog instances

        OpenFileDialog GetOFD(bool multiSelect)
        {
            return new OpenFileDialog()
            {
                Filter = GetFilter(this.AllowedExtensions),
                InitialDirectory = this.InitialDirectory,
                Multiselect = multiSelect,
                FileName = this.InitialFileName,
            };
        }
        SaveFileDialog GetSFD()
        {   
            return new SaveFileDialog()
            {
                Filter = GetFilter(this.AllowedExtensions),
                InitialDirectory = this.InitialDirectory,
                FileName = this.InitialFileName,
            };
        }

        string GetFilter(List<ImageFileExtensions> allowedExtensions)
        {
            StringBuilder filterBuilder = new StringBuilder();
            if (allowedExtensions == null || allowedExtensions.Contains(ImageFileExtensions.PNG))
                AppendFilter(filterBuilder, ImageFileExtensions.PNG);
            if (allowedExtensions == null || allowedExtensions.Contains(ImageFileExtensions.JPG))
                AppendFilter(filterBuilder, ImageFileExtensions.JPG);
            if (allowedExtensions == null || allowedExtensions.Contains(ImageFileExtensions.BMP))
                AppendFilter(filterBuilder, ImageFileExtensions.BMP);
            if (allowedExtensions == null || allowedExtensions.Contains(ImageFileExtensions.TIFF))
                AppendFilter(filterBuilder, ImageFileExtensions.TIFF);
            if (allowedExtensions == null || allowedExtensions.Contains(ImageFileExtensions.GIF))
                AppendFilter(filterBuilder, ImageFileExtensions.GIF);
            if (allowedExtensions == null || allowedExtensions.Contains(ImageFileExtensions.All))
                AppendFilter(filterBuilder, ImageFileExtensions.All);
            return filterBuilder.ToString();
        }
        void AppendFilter(StringBuilder filterBuilder, ImageFileExtensions extension)
        {
            if (filterBuilder.Length != 0)
                filterBuilder.Append("|");

            switch (extension)
            {
                case ImageFileExtensions.PNG:
                    filterBuilder.Append("Portable Network Graphic (*.PNG)|*.png");
                    break;
                case ImageFileExtensions.JPG:
                    filterBuilder.Append("JPEG (*.JPEG;*.JPG)|*.jpeg;*.jpg");
                    break;
                case ImageFileExtensions.BMP:
                    filterBuilder.Append("Bitmap (*.BMP)|*.bmp");
                    break;
                case ImageFileExtensions.TIFF:
                    filterBuilder.Append("TIFF (*.TIFF;*.TIF)|*.tiff;*.tif");
                    break;
                case ImageFileExtensions.GIF:
                    filterBuilder.Append("GIF (*.GIF)|*.gif");
                    break;
                case ImageFileExtensions.WMP:
                    filterBuilder.Append("Windows Media Photo (*.WMP)|*.wmp");
                    break;
                case ImageFileExtensions.All:
                    filterBuilder.Append("All Files|*.*");
                    break;
            }
        }

        #endregion
    }

    /// <summary>
    /// Repräsentiert die verfügbaren Dateierweiterungen.
    /// </summary>
    public enum ImageFileExtensions
    {
        /// <summary>
        /// Das Bild kann im PNG-Format geöffnet und gespeichert werden.
        /// </summary>
        PNG,
        /// <summary>
        /// Das Bild kann im JPG-Format geöffnet und gespeichert werden.
        /// </summary>
        JPG,
        /// <summary>
        /// Das Bild kann im BMP-Format geöffnet und gespeichert werden.
        /// </summary>
        BMP,
        /// <summary>
        /// Das Bild kann im TIFF-Format geöffnet und gespeichert werden.
        /// </summary>
        TIFF,
        /// <summary>
        /// Das Bild kann im GIF-Format geöffnet und gespeichert werden.
        /// </summary>
        GIF,
        /// <summary>
        /// Das Bild kann im WMP-Format geöffnet und gespeichert werden.
        /// </summary>
        WMP,
        /// <summary>
        /// Das Bild kann iin einem beliebigen Format geöffnet und gespeichert werden. (Filter: Alle Dateien)
        /// </summary>
        All,
    }

    /// <summary>
    /// Stellt Ereignisinformationen bereit um eine Anforderung einer Qualitätsangabe zu verarbeiten.
    /// </summary>
    public sealed class QualitiyRequiredEventArgs : EventArgs
    {
        /// <summary>
        /// Ruft die Ausgewählte Qualität ab oder legt diese fest.
        /// </summary>
        public byte Quality { get; set; }
        /// <summary>
        /// Ruft den kleinst-möglichen Wert für <paramref name="Quality"/> ab.
        /// </summary>
        public byte Minimum { get; private set; }
        /// <summary>
        /// Ruft den größt-möglichen Wert für <paramref name="Quality"/> ab.
        /// </summary>
        public byte Maximum { get; private set; }
        /// <summary>
        /// Ruft das Format ab, in für das die Qualitätsangabe gelten soll.
        /// </summary>
        public ImageFileExtensions Type { get; set; }

        /// <summary>
        /// Erstellt eine neue Instanz der <see cref="QualitiyRequiredEventArgs"/>-Klasse.
        /// </summary>
        /// <param name="minimum">Das Minimum für <paramref name="quality"/>.</param>
        /// <param name="maximum">Das Maximum für <paramref name="quality"/>.</param>
        /// <param name="quality">Die Standardmäßig gesetzte Qualität.</param>
        /// <param name="type">Der Typ des zu speichernden Bildes.</param>
        public QualitiyRequiredEventArgs(byte minimum, byte maximum, byte quality, ImageFileExtensions type)
        {
            this.Minimum = minimum;
            this.Maximum = maximum;
            this.Quality = quality;
            this.Type = type;
        }
    }



}
fatiheminsahin Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Fr 29.08.14 09:37 
ich habe mein Bild Datentyp von System.Windows.Controls.Image konvertieren können auf:
ausblenden C#-Quelltext
1:
System.Drawing.Image					

so wie kann ich jetzt dieses vorhandene Bild manipulieren sprich die entsprechenden Pixel ändern?

Ich stelle mir nach wie vor so etwas vor:
ausblenden C#-Quelltext
1:
Image = Setpixel(...);					

kann mir nun jemand behilflich sein?

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 29.08.14 09:49 
Hallo,

Image ist nur die abstrakte Basisklasse, d.h. du benötigst ein Objekt der Klasse Bitmap und dieses hat die Methode SetPixel.

Für diesen Beitrag haben gedankt: fatiheminsahin
fatiheminsahin Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Fr 29.08.14 11:49 
ich benötige folgende Konvertierung damit ich mein Problem lösen kann:

System.Windows.Controls.Image <-> System.Drawing.Bitmap

habe lange gegooglet aber viele konvertierungen gefunden aber nicht dieses leider... wer kann mir behilflich sein?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 29.08.14 13:39 
Du mußt nur in die eine Richtung konvertieren: Bitmap -> ImageSource
Erzeuge nach dem OpenFileDialog einfach direkt ein Bitmap-Objekt und bearbeite es:
ausblenden C#-Quelltext
1:
2:
3:
Bitmap bitmap = new Bitmap(openFileDialog.Filename);

bitmap.SetPixel(x, y, color);

Um das Bild dann in WPF anzuzeigen, nutze die ImageSourceConverter-Klasse:
ausblenden C#-Quelltext
1:
2:
ImageSourceConverter c = new ImageSourceConverter();
ImageSource imageSource = (ImageSource)c.ConvertFrom(bitmap);

Für diesen Beitrag haben gedankt: fatiheminsahin