Autor Beitrag
Soier
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 20.10.14 20:45 
Hi

bin neu was C#, habe aber erfahrung in programmieren von konsolen anwendungen in c und c++.

Also Aufgabe ist Farbverläufe zu programmieren mit setpixel und getpixel und zwar von Schwarz->Rot,Schwarz->Blau, Schwarz->Grün,Rot->Grün->Blau.

So meine logik ist die. Ich erstelle für jeden Verlauf einen Button.

im code erstelle ich im button eine bitmap die 256 pixel lang ist. anschliessend mache ich eine schleife die beim ersten pixel anfängt und diesen mit den aRGB werten (255,0,0,0) füllt nachdem durch gang ein pixel weiter und einen rgb wert erhöht zb 255,1,0,0 um so einen verlauf von schwarz zu rot zu generien. zum schluss gebe ich die bitmap in einer picturebox aus. Also das wäre meine logik die auch plausibel erscheint. allerdings bin ich wie gesagt neu in c# bzw allgemein im grafischen programmieren. wäre schön wenn mir einer die entsprechende syntak posten könnte würde auch riechen wenns nur für einen farbverlauf ist schwarz zu rot zum beispiel

danke im vorraus

mfg Soier
Soier Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 20.10.14 23:14 
okay hab die farbverläufe soweit nur von rot->grün->blau hab ich noch net
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: Di 21.10.14 08:21 
Hallo.

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:
   private void DrawBrush(Bitmap bmp, Point startPoint, Point endPoint, Color startColor, Color endColor)
      {
          float len = endPoint.X - startPoint.X;

          float deltaRed = (endColor.R - startColor.R) / len;
          float deltaGreen = (endColor.G - startColor.G) / len;
          float deltaBlue = (endColor.B - startColor.B) / len;

          float r = startColor.R, g = startColor.G, b = startColor.B;


          for (int x = startPoint.X; x < endPoint.X; x++)
          {
              r += deltaRed;
              g += deltaGreen;
              b += deltaBlue;

              for (int y = startPoint.Y; y < endPoint.Y; y++)
              {
                  bmp.SetPixel(x, y, Color.FromArgb((int) r, (int) g, (int) b));
              }
          }
      }

        private void button1_Click(object sender, EventArgs e)
        {
            Bitmap img = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            DrawBrush(img, new Point(00), new Point(img.Width / 2, img.Height), Color.Red, Color.Green);
            DrawBrush(img, new Point(img.Width / 20), new Point(img.Width, img.Height), Color.Green, Color.Blue);
            pictureBox1.Image = img;
        }

Hier ein Codebeispiel wie es fnktionieren sollte. Da könntest du jetzt auch beliebig viele Farbverläufe hintereinander hängen.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler