Farbmixer *SucheBuggrund*

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
benpicco
Beiträge: 391
Registriert: 01.10.2004 15:32
Wohnort: im Code
Kontaktdaten:

Farbmixer *SucheBuggrund*

Beitrag von benpicco »

Hier ein kleines Programm, mit dem man das Bild verwischen und ein Mosaik aus einem Bild erstellen kann. Zusätzlich kann man das Bild zufällig überarbeiten und daraus einen ASCII Text generieren.

Code: Alles auswählen

Global sprite.b
sprite=1
If InitSprite()
  sprite=1
 Else
  sprite=0
EndIf
Enumeration
  #wisch
EndEnumeration
;- Gadget Constants
Global FontName.s
Global FontSize.b
FontName="Arial"
FontSize=6
FontStyle=#PB_Font_Bold
LoadFont(1,FontName,FontSize,FontStyle)
Enumeration
  #start
  #Image_1
  #Image_2
  #ProgressBar
  #rec
  #Text_1
  #Text_2
  #check
  #save
  #load
  #state
  #enableprogress
  #verwisch
  #mosaik
  #groesse
  #kant
  #abort
  #random
  #ascii
  #Text
  #font
  #benpiccosoft
  #undo
  #print
EndEnumeration
Procedure scroll(window)
  Protected text$
  Protected merk$
  Repeat 
    text$=GetWindowTitle(window)
    merk$=Left(text$,1)
    text$=Right(text$,Len(text$)-1)+merk$
    Delay(100)
    If SetWindowTitle(window,text$):EndIf 
  ForEver
EndProcedure
Procedure sucsecc()
  For x=1 To 3
    beep_(100*x,100)
  Next
  beep_(1000,150)
  beep_(750,50)
  beep_(1250,75)
  
EndProcedure
Procedure shake(window)
  CreateThread(@sucsecc(),0)
  For x=1 To 5
    MoveWindow(WindowX()+Random(4),WindowY()+Random(4))
    Delay(100)
    MoveWindow(WindowX()-Random(4),WindowY()-Random(4))
    Delay(100)
  Next
EndProcedure
Procedure.s html_hex(color.l)
  red$= LSet(Hex(Red(color)),2,"0") 
  green$= LSet(Hex(Green(color)),2,"0") 
  blue$= LSet(Hex(Blue(color)),2,"0") 
  ProcedureReturn "#"+red$+green$+blue$
EndProcedure
Dim Bild.l(1,1)
Procedure ReloadImage(Image)
  FlipBuffers()
  UseImage(Image)
  Dim Bild.l(ImageWidth(),ImageHeight())
  If sprite=1
  SaveImage(Image,GetTempPath()+"\temp.bmp")
  LoadSprite(1,GetTempPath()+"\temp.bmp")
  StartDrawing(SpriteOutput(1)) 
  *buffer=DrawingBuffer() 
  Height=SpriteHeight(1) 
  Width=SpriteWidth(1) 
  pitch= DrawingBufferPitch() 
   ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
  pixelformat= DrawingBufferPixelFormat() 
  ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
  ;Debug "sprite"
  For y=1 To Height 
    WindowEvent()
    For x=1 To Width 
      ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&    
      Select pixelformat 
        Case #PB_PixelFormat_32Bits_BGR 
          bgr=PeekL(*buffer+4*z+z2) 
          rgb=(((bgr & $FF) << 16)|(((bgr >>8 ) & $FF)<<8)|((bgr >>16) & $FF)) 
          Bild(x-1,y-1)=rgb 
        Case #PB_PixelFormat_32Bits_RGB 
          Bild(x-1,y-1)=PeekL(*buffer+4*z+z2) 
      EndSelect 
      ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
      
      z+1 
    Next 
    z = 0 
    z2 + pitch 
  Next 
  StopDrawing() 
  Else
  StartDrawing(ImageOutput())
  For y=1 To ImageHeight()
    For x=1 To ImageWidth()
      WindowEvent()
      Bild(x,y)=Point(x,y)
    Next
  Next
  StopDrawing()
EndIf
EndProcedure
Procedure wisch(SourceIMG,TargetIMG,mode)
  Protected count.l
  UseImage(SourceIMG)
  CreateImage(TargetIMG,ImageWidth(),ImageHeight())
  Dim farbe.l(ImageWidth(),ImageHeight())
  UseImage(TargetIMG)
  If GetGadgetState(#enableprogress)=1
    enableprogress=1
  EndIf
  StartDrawing(ImageOutput())
  For y=0 To ImageHeight()
    For x=0 To ImageWidth()
      If x-1>0 And x+1<ImageWidth() And y-1>0 And y+1 < ImageHeight()
        red.f=(Red(Bild(x,y))+Red(Bild(x+1,y))+Red(Bild(x,y+1))+Red(Bild(x+1,y+1))+Red(Bild(x-1,y))+Red(Bild(x,y-1))+Red(Bild(x-1,y-1))+Red(Bild(x+1,y-1))+Red(Bild(x-1,y+1)))/9
        green.f=(Green(Bild(x,y))+Green(Bild(x+1,y))+Green(Bild(x,y+1))+Green(Bild(x+1,y+1))+Green(Bild(x-1,y))+Green(Bild(x,y-1))+Green(Bild(x-1,y-1))+Green(Bild(x+1,y-1))+Green(Bild(x-1,y+1)))/9
        blue.f=(Blue(Bild(x,y))+Blue(Bild(x+1,y))+Blue(Bild(x,y+1))+Blue(Bild(x+1,y+1))+Blue(Bild(x-1,y))+Blue(Bild(x,y-1))+Blue(Bild(x-1,y-1))+Blue(Bild(x+1,y-1))+Blue(Bild(x-1,y+1)))/9
        If mode=1
          If red>255
            red=red-255
          EndIf
          If green>255
            green=green-255
          EndIf
          If blue>255
            blue=blue-255
          EndIf
        EndIf
        Plot(x,y,RGB(red,green,blue))
        If enableprogress=1
          count+1
          progress.f=(count/(ImageHeight()*ImageWidth()))*100
          SetGadgetState(#ProgressBar,progress)
        EndIf
      EndIf
    Next
  Next
  StopDrawing()
  If enableprogress=1
    SetGadgetState(#ProgressBar,100)
  EndIf
EndProcedure
Procedure mosaik(SourceIMG,TargetIMG,groesse,zw,mode)
  If GetGadgetState(#enableprogress)=1
    enableprogress=1
  EndIf
  Protected count.l
  count=0
  UseImage(SourceIMG)
  CreateImage(TargetIMG,ImageWidth(),ImageHeight())
  UseImage(TargetIMG)
  StartDrawing(ImageOutput())
  For y=0 To ImageHeight() ;Step groesse

    For x=0 To ImageWidth() ;Step groesse
      If enableprogress=1
        count+1
        progress.f=(count/((ImageHeight()/10)*(ImageWidth()/10)))*100
        SetGadgetState(#ProgressBar,progress)
      EndIf
      red.f=0
      green.f=0
      blue.f=0
      For z=0 To groesse
        For q=0 To groesse
          If x+q<ImageWidth() And y+z<ImageHeight()
          red.f=red+Red(Bild(x+q,y+z))
          green.f=green+Green(Bild(x+q,y+z))
          blue.f=blue+Blue(Bild(x+q,y+z))
          EndIf
        Next
      Next
    
      red=red/Pow(groesse+1,2)
      green=green/Pow(groesse+1,2)
      blue=blue/Pow(groesse+1,2)
      Box(x,y,groesse+zw,groesse+zw,RGB(red,green,blue))
      If mode=1
        farbe.l=RGB(red/1.5,green/1.5,blue/1.5)
        Plot(x,y,farbe)
        For z=1 To groesse
          Plot(x+z,y,farbe)
          Plot(x+z,y+groesse,RGB(Red(farbe)/z,Green(farbe)/z,Blue(farbe)/z))
        Next
        For z=1 To groesse
          Plot(x,y+z,farbe)
          Plot(x+groesse,y+z,RGB(Red(farbe)/z,Green(farbe)/z,Blue(farbe)/z))
        Next
      EndIf
      x+groesse

    Next
    y+groesse
    Next
  StopDrawing()
EndProcedure
Procedure ran(SourceIMG,TargetIMG)
  If GetGadgetState(#enableprogress)=1
    enableprogress=1
  EndIf
  Protected count.l
  count=0
  UseImage(SourceIMG)
  CreateImage(TargetIMG,ImageWidth(),ImageHeight())
  UseImage(TargetIMG)
  StartDrawing(ImageOutput())
  For y=0 To ImageHeight() 
    
    For x=0 To ImageWidth()
      If enableprogress=1
        count+1
        progress.f=(count/((ImageHeight())*(ImageWidth())))*100
        SetGadgetState(#ProgressBar,progress)
      EndIf
      Plot(x,y,RGB(Random(Red(Bild(x,y))),Random(Green(Bild(x,y))),Random(Blue(Bild(x,y)))))
    Next
  Next
  StopDrawing()
EndProcedure
Procedure ASCII_text(SourceIMG,TargetIMG,mode)
  If GetGadgetState(#enableprogress)=1
    enableprogress=1
  EndIf
  Protected count.l
  count=0
  UseImage(SourceIMG)
  CreateImage(TargetIMG,ImageWidth(),ImageHeight())
  UseImage(TargetIMG)
  StartDrawing(ImageOutput())
  DrawingMode(1)
  DrawingFont(UseFont(1))
  For y=0 To ImageHeight() 
    For x=0 To ImageWidth() 
      If enableprogress=1
        count+1
        progress.f=(count/((ImageHeight())*(ImageWidth())))*100
        SetGadgetState(#ProgressBar,progress)
      EndIf
      red.f=0
      green.f=0
      blue.f=0
      For z=0 To FontSize-1
        For q=0 To FontSize-1
          If x+q<ImageWidth() And y+z<ImageHeight()
            red.f=red+Red(Bild(x+q,y+z))
            green.f=green+Green(Bild(x+q,y+z))
            blue.f=blue+Blue(Bild(x+q,y+z))
          EndIf
        Next
      Next
      
      red=red/Pow(FontSize,2)
      green=green/Pow(FontSize,2)
      blue=blue/Pow(FontSize,2) 
      FrontColor(red,green,blue)
      Locate(x,y)
      If mode=0
        new$=Chr((red+green+blue)/3)
        DrawText(new$)
        x+TextLength(new$)
      ElseIf mode=1
        new$=Chr(Random(25) + 65)
        DrawText(new$)
        x+TextLength(new$)
      EndIf
    Next
    y+FontSize
  Next
  StopDrawing()
EndProcedure
Procedure Open_wisch()
  If OpenWindow(#wisch, 284, 160, 580, 310,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , " Farbmixer 1.4c ")
    If CreateGadgetList(WindowID())
      ButtonGadget(#start, 220, 280, 90, 25, "Start")
      ImageGadget(#Image_1, 50, 40, 190, 140, LoadImage(0, ""), #PB_Image_Border)
      ImageGadget(#Image_2, 250, 40, 190, 140, LoadImage(0, ""), #PB_Image_Border)
      ProgressBarGadget(#ProgressBar, 160, 220, 210, 20, 0, 100, #PB_ProgressBar_Smooth)
      TrackBarGadget(#rec, 90, 250, 300, 20, 1, 100, #PB_TrackBar_Ticks)
      TextGadget(#Text_1, 10, 250, 80, 20, "Durchläufe: 1")
      CheckBoxGadget(#check,10,210,130,15,"Keine Gitternetzlinien")
      TextGadget(#state,150,200,200,15," ")
      ButtonGadget(#load,400,250,100,20,"Laden")
      ButtonGadget(#save,400,270,100,20,"Speichern")
      CheckBoxGadget(#enableprogress,10,225,150,15,"Enable Progressbar")
      OptionGadget(#verwisch,400,200,120,15,"Unschärfe generieren")
      OptionGadget(#mosaik,400,215,100,15,"Mosaik erstellen")
      OptionGadget(#random,400,230,100,15,"Zufallsmuster")
      OptionGadget(#ascii,400,185,100,15,"ASCII-Text")
      SpinGadget(#groesse,80,270,30,15,1,300)
      TextGadget(#Text_2,10,270,70,15,"Mosaikgröße")
      CheckBoxGadget(#kant,10,195,100,15,"Steinkanten")
      CheckBoxGadget(#Text,10,180,100,15,"Zufälliger Text")
      ButtonGadget(#abort,320,283,80,20,"Abbrechen")
      ButtonGadget(#font,110,180,100,17,"Schriftart wählen")
      TextGadget(#benpiccosoft,600,300,300,15,Chr(169)+" 2005 BenpiccoSoft")
      ButtonGadget(#undo,220,180,100,17,"Rückgängig")
      ButtonGadget(#print,400,290,100,17,"Drucken")
    EndIf
    OpenWindowedScreen(WindowID(#wisch),1000,1000,1,1,0,0,0)
  EndIf
  SetGadgetState(#verwisch,1)
  DisableGadget(#kant,1)
  DisableGadget(#check,1)
  SetGadgetState(#groesse,10)
  SetGadgetText(#groesse,Str(GetGadgetState(#groesse)))
  DisableGadget(#groesse,1)
  DisableGadget(#abort,1)
  DisableGadget(#Text,1)
  DisableGadget(#font,1)
  DisableGadget(#undo,1)
  DisableGadget(#print,1)
EndProcedure
Open_wisch()
#gadgets=23
Dim abstX.w(#gadgets)
Dim abstY.w(#gadgets)
Dim GadgetOldWidth.w(#gadgets)
Dim GadgetOldHeight.w(#gadgets)
Dim typ.b(#gadgets)
UseWindow(#wisch)
For x=0 To #gadgets
  abstX(x)=WindowWidth()-GadgetX(x)
  abstY(x)=WindowHeight()-GadgetY(x)
  GadgetOldWidth(x)=GadgetWidth(x)
  GadgetOldHeight(x)=GadgetHeight(x)
  typ(x)=4
Next
typ(#Image_1)=2
typ(#Image_2)=3

DisableGadget(#start,1)
DisableGadget(#save,1)
CreateThread(@scroll(),#wisch)
image$=ProgramParameter()
If image$
  If GetExtensionPart(image$)="bmp" Or GetExtensionPart(image$)="jpg" Or GetExtensionPart(image$)="png" Or GetExtensionPart(image$)="tiff" Or GetExtensionPart(image$)="tga"
    Goto load
  Else
    If MessageRequester("info","Achtung, das von ihnen gewählte Bildvormat wird nicht unterstützt! Es kann daher zu Fehlern kommen. Trotzdem laden?",#PB_Requester_MultiSelection)=1
      Goto load
    EndIf
    
  EndIf
EndIf

  


Repeat
  Delay(1)
  If WindowHeight.f<>WindowHeight() Or WindowWidth.f<>WindowWidth()
    For x=0 To #gadgets
      If typ(x)=1
        ResizeGadget(x,WindowWidth()-abstX(x),WindowHeight()-abstY(x),GadgetWidth(x),GadgetHeight(x))
      ElseIf typ(x)=2
        ResizeGadget(x,GadgetX(x),GadgetY(x),WindowWidth()-abstX(x)-GadgetX(x)+GadgetOldWidth(x),WindowHeight()-abstY(x)-GadgetY(x)+GadgetOldHeight(x))
      ElseIf typ(x)=3
        ResizeGadget(x,WindowWidth()-abstX(x),GadgetY(x),WindowWidth()-abstX(x)-GadgetWidth(x)+GadgetOldWidth(x),WindowHeight()-abstY(x)-GadgetY(x)+GadgetOldHeight(x))
      ElseIf typ(x)=4
        ResizeGadget(x,GadgetX(x),WindowHeight()-abstY(x),GadgetWidth(x),GadgetHeight(x))
      ElseIf typ(x)=5
        ResizeGadget(x,WindowWidth()-abstX(x),GadgetY(x),GadgetWidth(x),GadgetHeight(x))
      EndIf
      
    Next
    If IsImage(2) 
      ;Debug "Image existiert"
      CopyImage(2,0)
      ResizeImage(0,GadgetWidth(#Image_2),GadgetHeight(#Image_2))
      SetGadgetState(#Image_2,UseImage(0))
      LoadImage(10,image$)
      ResizeImage(10,GadgetWidth(#Image_1),GadgetHeight(#Image_1))
      SetGadgetState(#Image_1,UseImage(10))
    EndIf
  
   ResizeGadget(#Image_2,GadgetX(#Image_2),GadgetY(#Image_2),GadgetWidth(#Image_1),GadgetHeight(#Image_1))
  EndIf
  WindowWidth=WindowWidth()
  WindowHeight=WindowHeight()
  Event = WaitWindowEvent()
  If Event = #PB_EventGadget
    
    ;Debug "WindowID: " + Str(EventWindowID())
    
    GadgetID = EventGadgetID()
    
    If GadgetID = #start
      DisableGadget(#abort,0)
      CopyImage(1,3)
      DisableGadget(#undo,0)
      For a=1 To GetGadgetState(#rec)
        SetGadgetText(#state,"Durchlauf "+Str(a)+" von "+Str(GetGadgetState(#rec)))
        If GetGadgetState(#mosaik)=1
          mosaik(1,2,GetGadgetState(#groesse),GetGadgetState(#check),GetGadgetState(#kant))
        ElseIf GetGadgetState(#verwisch)=1
          wisch(1,2,0)
        ElseIf GetGadgetState(#random)=1
          ran(1,2)
        ElseIf GetGadgetState(#ascii)=1
          ASCII_text(1,2,GetGadgetState(#Text))
        EndIf
      CopyImage(2,1)
      CopyImage(2,0)
      ResizeImage(0,GadgetWidth(#Image_1),GadgetHeight(#Image_1))
      UseImage(0)
      SetGadgetState(#Image_2,ImageID())   
      If WindowEvent() = #PB_EventGadget
        If EventGadgetID() =#abort
          SetGadgetText(#state,"Abgebrochen nach "+Str(a)+" Durchläufen")
          Break
        EndIf
      EndIf
     ;If GetGadgetState(#rec)>1
        SetGadgetText(#state,"Erneuere Bild")
        ReloadImage(1)
      ;EndIf
      
    Next
    DisableGadget(#save,0)
    If GetGadgetText(#state)<>"Abgebrochen nach "+Str(a)+" Durchläufen"
      SetGadgetText(#state,"Fertig!")
      shake(#wisch)
    EndIf
    DisableGadget(#abort,1)
  ElseIf GadgetID =#load
    

    image$=OpenFileRequester("Bild auswählen","c:\","Grafik Files|*.bmp;*.jpg;*.png;*.tiff;*.tga|Bitmaps|*.bmp|JPEGs|*.jpg|TrueVision Targa|*.tga|Tiff|*.tiff",-1)
    If image$
      load:
      UsePNGImageDecoder()
      UseTGAImageDecoder()
      UseTIFFImageDecoder()
      UseJPEGImageDecoder()
      SetGadgetText(#state,"Loading...")
      DisableGadget(#start,0)
      If LoadImage(1,image$)
      CopyImage(1,0)
      CopyImage(1,2)
      ResizeImage(0,GadgetWidth(#Image_1),GadgetHeight(#Image_1))
      UseImage(0)
      SetGadgetState(#Image_1,ImageID())
      
      ReloadImage(1)
      SetGadgetText(#state,"Bereit")
      DisableGadget(#save,0)
      DisableGadget(#print,0)
    Else
      MessageRequester("error","Bild konnte nicht geladen werden")
      SetGadgetText(#state,"Fehler beim laden von "+GetFilePart(image$))
    EndIf
  EndIf
  
    EndIf
    
  ElseIf GadgetID=#save
    save$=SaveFileRequester("Speicherort auswählen","Mixbild","Bitmap|*.bmp |Jpeg|*.jpg|PortableNetworkGrafics|*.png|HTML-Seite|*.html;*.htm",0)
    Select SelectedFilePattern()
      Case 0
        extend.s="bmp"
      Case 1 
        extend="jpg"
      Case 2 
        extend="png"
      Case 3
        extend="html"
    EndSelect
    If save$
      SetGadgetText(#state,"Speichern...")
      WindowEvent()
      If GetExtensionPart(save$)=""
        save$+"."+extend
      EndIf
      Select GetExtensionPart(save$)
        Case "bmp"
          SaveImage(2,save$,#PB_ImagePlugin_BMP)
        Case "jpg"
          UseJPEGImageEncoder()
          SaveImage(2,save$,#PB_ImagePlugin_JPEG)
        Case "png"
          UsePNGImageEncoder()
          SaveImage(2,save$,#PB_ImagePlugin_PNG)
        Case "htm"
          Goto html:
        Case "html"
          html:
          UseImage(2) 
          filesize=(28*ImageWidth()*ImageHeight())/1024
          If filesize>1000
            MessageRequester("Warnung!","Achtung, die zu erzeugende html-seite wird über "+Str(filesize)+"kb groß sein, das würde bedeuten, das ein Modemnutzer sie in bestenfalls "+Str((filesize/(56/8))/60)+"min öffnen könnte.", #MB_OK|#MB_ICONWARNING)
          EndIf
          DeleteFile(save$)
          OpenFile(1,save$) 
          WriteString("<html><head><title>"+GetFilePart(image$)+"</title></head><body><center><table cellspacing=0 cellpadding=0 Width="+Str(ImageWidth())+" Height="+Str(ImageHeight())+">")
          For y=0 To ImageHeight()
            WriteStringN("<tr>")
            For x=0 To ImageWidth()
              WindowEvent()
              WriteStringN("<td bgcolor="+Chr(34)+html_hex(Bild(x,y))+Chr(34)+"></td>")
            Next
            WriteStringN("</tr>")
          Next
          WriteStringN("</table></center></body></html>")
          CloseFile(1)
      EndSelect
      SetGadgetText(#state,"Gespeichert!")
      RunProgram(save$)
    EndIf
    GadgetID=500
  ElseIf GadgetID=#rec
    SetGadgetText(#Text_1,"Durchläufe: "+Str(GetGadgetState(#rec)))
  ElseIf GadgetID=#mosaik
    SetGadgetState(#verwisch,0)
    SetGadgetState(#rec,1)
    SetGadgetText(#Text_1,"Durchläufe: "+Str(GetGadgetState(#rec)))
    DisableGadget(#rec,1)
    DisableGadget(#check,0)
    DisableGadget(#groesse,0)
    DisableGadget(#kant,0)
    DisableGadget(#Text,1)
    DisableGadget(#font,1)
  ElseIf GadgetID=#verwisch
    SetGadgetState(#mosaik,0)
    DisableGadget(#check,1)
    DisableGadget(#rec,0)
    DisableGadget(#groesse,1)
    DisableGadget(#kant,1)
    DisableGadget(#Text,1)
    DisableGadget(#font,1)
  ElseIf GadgetID=#groesse
    SetGadgetText(#groesse,Str(GetGadgetState(#groesse)))
  ElseIf GadgetID=#random
    SetGadgetState(#rec,1)
    DisableGadget(#Text,1)
    DisableGadget(#check,1)
    DisableGadget(#rec,1)
    DisableGadget(#groesse,1)
    DisableGadget(#kant,1)
    DisableGadget(#font,1)
  ElseIf GadgetID=#ascii
    DisableGadget(#Text,0)
    DisableGadget(#check,1)
    DisableGadget(#rec,1)
    DisableGadget(#groesse,1)
    DisableGadget(#kant,1)
    DisableGadget(#font,0)
  ElseIf GadgetID=#font
    If FontRequester(FontName,FontSize,0) 
      FontName=SelectedFontName()
      FontSize=SelectedFontSize()
      FontStyle=SelectedFontStyle()
      LoadFont(1,FontName,FontSize,FontStyle)
    EndIf
    GadgetID=500
  ElseIf GadgetID=#print
    SetGadgetText(#state,"Sende Bild an Drucker...")
    If PrintRequester()
    StartPrinting("Farbmix-"+image$)
    StartDrawing(PrinterOutput())
    ;MessageRequester("Info","Breite:"+Str(PrinterPageWidth())+" Höhe:"+Str(PrinterPageHeight()))
    DrawImage(UseImage(2),0,0,PrinterPageWidth(),(PrinterPageWidth()/ImageWidth())*ImageHeight())
    StopDrawing()
    StopPrinting()
    SetGadgetText(#state,"Gedruckt!")
  Else
    SetGadgetText(#state,"Druckvorgang erfolglos")
  EndIf
  GadgetID=500
  ElseIf GadgetID=#kant
    SetGadgetState(#check,1)
  ElseIf GadgetID=#undo
    SetGadgetText(#state,"Bild zurücksetzen")
    CopyImage(3,1)
    ReloadImage(1)
    CopyImage(1,2)
    CopyImage(1,0)
    ResizeImage(0,GadgetWidth(#Image_1),GadgetHeight(#Image_1))
    SetGadgetState(#Image_2,UseImage(0))
    SetGadgetText(#state,"Fertig")
    DisableGadget(#undo,1)
    GadgetID=500
    EndIf
  
   
  Until Event = #PB_EventCloseWindow
End
Zuletzt geändert von benpicco am 17.09.2005 12:31, insgesamt 18-mal geändert.
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Schön, aber bei mir werden die Farben manchmal falsch dargestellt.
Bei Mosaik [10]: Weiß = Schwarz
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

bei mir auch:
blau = pink :shock:
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
benpicco
Beiträge: 391
Registriert: 01.10.2004 15:32
Wohnort: im Code
Kontaktdaten:

Beitrag von benpicco »

ja, ist mir auch aufdgefallen, das ist ein bug, den ich behoben habe, beim teilen hatte ich vergessen, das die Zählung mit 0 beginnt... :freak:
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

Grds. schön. :)

1) kleiner Bug: bei Mosaik-Größe = 1 wird bei mir das neue Bild schwarz
2) was hat es mit den xx Durchläufen bei der Unschärfe auf sich? (kann da keine Unterschiede beim Zielbild entdecken)
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Eine Abbruchmöglichkeit wär auch nicht schlecht. :allright:
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
benpicco
Beiträge: 391
Registriert: 01.10.2004 15:32
Wohnort: im Code
Kontaktdaten:

Beitrag von benpicco »

Die Unschärfe sollte eigentlich steigen, es kommt aber sehr auf´s Bild an, ogb man dies bemerkt ^^ (einfach mal speichern und dann ansehen, es dürfte einen Unterschied geben)
Das schwarze Bild kommt zustande, wenn die Option "keine Gitternetzlinien" nicht gewählt wurde; die schwarzen Linien überlappen den letzten Pixel, also wird alles Schwarz (sonst ist das Bild wie dass ausgangsbild, da 1 Pixel = 1 Pixel, also unnötig (villeicht sollte ich mindestens 2 nehmen?))
Abrechen hab ich mir auch schon überlegt, aber würde das dann nicht viel länger brauchen, für einen durchlauf (wie mit eingeschaltener Progressbar)?
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Dann mach doch nur jeden Durchlauf eine Abfrage, oder benutz einen WindowCallback() :allright:
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
benpicco
Beiträge: 391
Registriert: 01.10.2004 15:32
Wohnort: im Code
Kontaktdaten:

Beitrag von benpicco »

Ok, aber jetzt muss man dafür ganzschön drauflosklicken, wenn man´s abbrechen will ^^
Ich hab auch gleich mal 2 neue Funktionen eingebaut.
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
Benutzeravatar
benpicco
Beiträge: 391
Registriert: 01.10.2004 15:32
Wohnort: im Code
Kontaktdaten:

Beitrag von benpicco »

Achso, das Programm hat einen seltsamen bug:
Öffnet einmal das Beispielbild (XP) Wasserlilien.jpg (der Fehler tritt auch bei anderen Bildern auf) , und speichert es ohne Änderung als *.html
-> Das Bild wird im oberen Virtel korrekt angezeigt, aber dann?!? :o
Plötlich sind die Lilien Weiß und schwarz und nur och die Blätter sind grün! :freak: Woran liegt das? :bluescreen:, ich hab schon alles mögliche probiert, wo ist da der Fehler und warum tritt er dann nur bei manchen Bildern und nur am unteren Ende des Bildes und nur in html auf???
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
Antworten