Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Завтра :

День славянской письменности и культуры


Потоки


Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
ДОБ
Гость







СообщениеСр, 05-Окт-2005 20:19    Заголовок сообщения: Потоки
Цитата

пожалуста помогити
1)почему не работает и как исправить
Код:

var
q:tmemorystream;
begin
q:=tmemorystream.Create;
image1.Picture.Bitmap.SaveToStream(q);
q.Position:=0;
image2.Picture.Bitmap.LoadFromStream(q);

2) как сохранить в потоки без IMAGE
Код:

var
ms:TMemoryStream;
dx, dy : integer;
hSourceDC : HDC;
begin
  dx := screen.DesktopWidth;
  dy := screen.DesktopHeight;
  hSourceDC := CreateDC('DISPLAY',nil,nil,nil);
  Image1.Picture.Bitmap.Width := dx;
  Image1.Picture.Bitmap.Height := dy;
  Image1.Picture.Bitmap.Canvas.FillRect(Rect(0, 0, dx, dy));
  BitBlt(Image1.Picture.Bitmap.Canvas.Handle, 0, 0, dx, dy, hSourceDC, 0, 0, SRCCopy);
  DeleteDC(hSourceDC);
end;
В начало
Пол:Муж TuXAPuK
Великий гонщик

Предупреждений : 1
Возраст: 26
Знак зодиака: Рыбы
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
СообщениеСр, 05-Окт-2005 21:09 
Цитата

Насчёт 1-го... Точно не знаю... Но я-бы зделал так...
Код:
var
q:tstream;
begin
q:=tmemorystream.Create;
image1.Picture.Bitmap.SaveToStream(q);
q.seek(0,soFromBeginning);
image2.Picture.Bitmap.LoadFromStream(q);
end;

А насчёт второго сам мучуюсь не знаю...

_________________
В начало
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ДОБ
Гость







СообщениеСр, 05-Окт-2005 21:19 
Цитата

TuXAPuK не пашит твой код результат такойже как и у моево
В начало
Пол:Муж TuXAPuK
Великий гонщик

Предупреждений : 1
Возраст: 26
Знак зодиака: Рыбы
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
СообщениеСр, 05-Окт-2005 21:46 
Цитата

Мой модуль на делфи 7...
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

  Function MkShotStream(in_iW, in_iH: Integer): TStream;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
q:tmemorystream;
begin
q:=tmemorystream.Create;
image1.Picture.Bitmap.SaveToStream(q);
q.Position:=0;
image2.Picture.Bitmap.LoadFromStream(q);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
q:tstream;
begin
q:=tmemorystream.Create;
image1.Picture.Bitmap.SaveToStream(q);
q.seek(0,soFromBeginning);
image2.Picture.Bitmap.LoadFromStream(q);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
ms:TMemoryStream;
dx, dy : integer;
hSourceDC : HDC;
begin
  dx := screen.DesktopWidth;
  dy := screen.DesktopHeight;
  hSourceDC := CreateDC('DISPLAY',nil,nil,nil);
  Image2.Picture.Bitmap.Width := dx;
  Image2.Picture.Bitmap.Height := dy;
  Image2.Picture.Bitmap.Canvas.FillRect(Rect(0, 0, dx, dy));
  BitBlt(Image2.Picture.Bitmap.Canvas.Handle, 0, 0, dx, dy, hSourceDC, 0, 0, SRCCopy);
  DeleteDC(hSourceDC);
end;

   Function MkShotStream(in_iW, in_iH: Integer): TStream;
   var
      iDC: HDC;
      pBitmap: TBitmap;
   Begin
      pBitmap := TBitmap.Create;
      pBitmap.Width := in_iW;
      pBitmap.Height := in_iH;
      iDC := GetDC(0);
      StretchBlt(pBitmap.Canvas.Handle, 0, 0, in_iW, in_iH, iDC, 0, 0, Screen.Width, Screen.Height, SRCCOPY);
      ReleaseDC(0, iDC);
      Result := TMemoryStream.Create;
      pBitmap.SaveToStream(Result);
      Result.Seek(0, soFromBeginning);
   End;


   procedure TForm1.Button4Click(Sender: TObject);
   begin
      Image2.Picture.Bitmap.LoadFromStream(MkShotStream(Image2.Width, Image2.Height));
   end;

end.

Всё 100% работает....

_________________
В начало
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Пол:Муж TuXAPuK
Великий гонщик

Предупреждений : 1
Возраст: 26
Знак зодиака: Рыбы
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
СообщениеСр, 05-Окт-2005 21:50 
Цитата

D7project + exe
_________________
В начало
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ДОБ
Гость







СообщениеСр, 05-Окт-2005 22:17 
Цитата

TuXAPuK Тут и в прямь какаята мистика я пользуюсь делфи 2005
твой проект работает идиально пишу слово в слова в своём и при
передачи картинки в паток картинка в первой имаги исчезает не
поивившесь во второй спасибо что помог буду разбираца. а
изображения икрана прикрасно заходит и выходит
В начало
Пол:Муж TuXAPuK
Великий гонщик

Предупреждений : 1
Возраст: 26
Знак зодиака: Рыбы
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
СообщениеЧт, 06-Окт-2005 1:05 
Цитата

Усложняем поставленную задачу....
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TMemoryStream *MyStream = new TMemoryStream;
    Image1->Picture->Bitmap->SaveToStream(MyStream);
    MyStream->Seek(0, soFromBeginning);
    Image2->Picture->Bitmap->LoadFromStream(MyStream);
    MyStream->Free();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    HDC hdcImage;
    hdcImage = GetDC(0);

    Image2->Picture->Bitmap = new Graphics::TBitmap;
    Image2->Picture->Bitmap->Width = Image2->Width;
    Image2->Picture->Bitmap->Height = Image2->Height;

    StretchBlt(Image2->Picture->Bitmap->Canvas->Handle, 0, 0, Image2->Width, Image2->Height, hdcImage, 0, 0, Screen->Width, Screen->Height, SRCCOPY);
    ReleaseDC(0, hdcImage);
}
//---------------------------------------------------------------------------


И кто тут говорил о том что на делфи меньше кода... И програмки с такой-же скоростью работают... Вот вам достойный пример...

_________________
В начало
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
ДОБ
Гость







СообщениеЧт, 06-Окт-2005 15:29 
Цитата

Цитата:

И кто тут говорил о том что на делфи меньше кода... И програмки с такой-же скоростью работают... Вот вам достойный пример

И где ты такое слышал я лично только маты по поводу огромнова размера слышал ? Это как нажрача надо чтоп такое сказать.[/code]
В начало
Пол:Муж aka57
Я живу тут....


Возраст: 28
Знак зодиака: Стрелец
Зарегистрирован: 03.07.2003
Сообщения: 1287

СообщениеЧт, 06-Окт-2005 16:37 
Цитата

to TuXAPuK

Кода не меньше... Как я погляжу, ты в С++ только два нажатия обрабатыаешь и про одну процедурку забыл... Что до определения класса формы, то он лежит в отдельном файле. В итоге по совокупности получаем примерно столько же.

p.s. А VCL случаем не на Object Pascal написана?
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж TuXAPuK
Великий гонщик

Предупреждений : 1
Возраст: 26
Знак зодиака: Рыбы
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
СообщениеЧт, 06-Окт-2005 21:44 
Цитата

Да нее... Если-бы мог... То и функцию на C++ написал-бы... Я его всего 2-ю недельку учу поэтому всего не знаю... Но то что функция копирования
Код:
    TMemoryStream *MyStream = new TMemoryStream;
    Image1->Picture->Bitmap->SaveToStream(MyStream);
    MyStream->Seek(0, soFromBeginning);
    Image2->Picture->Bitmap->LoadFromStream(MyStream);
    MyStream->Free();
работает быстее я вам точно говорю на моём 2м компе 133Mhz это значительно чувствуется...
_________________
В начало
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
DrPass
Знающий :)
/Почетный Модератор/


Возраст: 31
Знак зодиака: Лев
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
СообщениеПт, 07-Окт-2005 22:09 
Цитата

to TuXAPuK
Ты с С++Стройкой не сравнивай. Во-первых, там и правда VCL написана на том же самом Паскале, а во-вторых, компиляторы Стройки и Delphi отличаются только синтаксическим анализатором, а в своем ядре это один и тот же старый добрый Borland C++ Compiler.

_________________
Да пребудет с вами Сила!
В начало
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Страница 1 из 1
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100