Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
-4 / 0 / 0
Регистрация: 13.11.2015
Сообщений: 488
1

Лаги при скриншоте

25.10.2016, 19:54. Показов 1065. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var bmp:TBitmap;
    t:tJpegimage;
begin
    bmp := TBitmap.Create;
    t:=tJpegimage.Create;
    bmp.Width := Screen.Width;
    bmp.Height := Screen.Height;
    BitBlt(bmp.Canvas.Handle, 0,0, Screen.Width, Screen.Height,
           GetDC(0), 0,0,SRCCOPY);
    t.Assign(bmp);
    t.CompressionQuality:=20;
    t.Compress;
    Image1.Picture.Assign(t);
    bmp.Free;
end;
Поместил этот код в таймер с интервалом 100 милисекунд. без этого участка
Delphi
1
2
3
t.Assign(bmp);
    t.CompressionQuality:=20;
    t.Compress;
не лагает. когда я его добавляю (чтобы сжать картинку) программа начинает подлагивать. Как убрать подлагивания?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2016, 19:54
Ответы с готовыми решениями:

Определить не искаженный текст на скриншоте
При нажатии на кнопку нужно определить простой текст на этой картинке (Libraries и ниже, но нужно...

Окно WPF, невидимое при скриншоте
Здравствуйте. Существует ли возможность сделать так, чтобы определенное wpf окно было невидимым на...

Как при скриншоте окна подрезать его заголовок на разных компьютерах
Делаю скриншот окна игры, игра не фулскрин, на скриншоте мне нужна только рабочая область. Скриншот...

При настройке роутера, чем отличаются друг от друга вот эти два значения на скриншоте
Всем доброе!) В чём отличие этих двух параметров на скриншоте при настройке роутера - "IP...

26
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
25.10.2016, 21:44 2
Цитата Сообщение от Олег2000про Посмотреть сообщение
Поместил этот код в таймер с интервалом 100 милисекунд
а вы хорошо подумали прежде чем делать то что делаете?

Цитата Сообщение от Олег2000про Посмотреть сообщение
Как убрать подлагивания?
делайте скрин, а потом в потоке жмите
0
-4 / 0 / 0
Регистрация: 13.11.2015
Сообщений: 488
25.10.2016, 22:05  [ТС] 3
qwertehok, поток не видит переменных
0
97 / 97 / 25
Регистрация: 25.04.2016
Сообщений: 525
25.10.2016, 22:07 4
Цитата Сообщение от Олег2000про Посмотреть сообщение
qwertehok, поток не видит переменных
Все он отлично видит. Научите поток видеть переменные. Или вообще делайте скриншоты потоком - который работает как спусковой крючок у пистолета: дали команду СТАРТ, он сделал все что нужно и забрали результат. А поток встал на паузу и ждет нового старта.
0
-4 / 0 / 0
Регистрация: 13.11.2015
Сообщений: 488
25.10.2016, 22:10  [ТС] 5
MyEternity, Вот код таймера
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var bmp:TBitmap;
    t:tJpegimage;
begin
    bmp := TBitmap.Create;
    t:=tJpegimage.Create;
    bmp.Width := Screen.Width;
    bmp.Height := Screen.Height;
    BitBlt(bmp.Canvas.Handle, 0,0, Screen.Width, Screen.Height,
           GetDC(0), 0,0,SRCCOPY);
    t.Assign(bmp);
    t.CompressionQuality:=20;
    t.Compress;
    Image1.Picture.Assign(t);
    bmp.Free;
end;
Как сделать тоже только в потоке? И как его научить видеть переменные?
0
97 / 97 / 25
Регистрация: 25.04.2016
Сообщений: 525
25.10.2016, 22:13 6
1. Создаете поток. В нем таймер не нужен, он сам как таймер будет работать.
Варианты
2. Самый простой вариант, но немного неправильный: Поток работает - а результат публикует через объявленное property формы ну или куда вам там надо на форму.
0
-4 / 0 / 0
Регистрация: 13.11.2015
Сообщений: 488
25.10.2016, 22:27  [ТС] 7
MyEternity, А правильный вариант какой
0
97 / 97 / 25
Регистрация: 25.04.2016
Сообщений: 525
25.10.2016, 23:24 8
Как-то так.
Но сразу предупреждаю - синхронизацию мне было делать лень.
Да и не люблю я из потоков на формы что-то писать, не правильно это.

Пример упакован 7-zip, написан на DXE10.1
Вложения
Тип файла: 7z thread.7z (634.1 Кб, 2 просмотров)
0
-4 / 0 / 0
Регистрация: 13.11.2015
Сообщений: 488
25.10.2016, 23:36  [ТС] 9
MyEternity,
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
bmp := TBitmap.Create;
    t:=tJpegimage.Create;
    bmp.Width := Screen.Width;
    bmp.Height := Screen.Height;
    BitBlt(bmp.Canvas.Handle, 0,0, Screen.Width, Screen.Height,
           GetDC(0), 0,0,SRCCOPY);
    t.Assign(bmp);
    t.CompressionQuality:=20;
    MyThread:=TMyThread.Create(False);
    MyThread.Priority:=tpNormal;
    Image1.Picture.Assign(t);
    bmp.Free;
    t.Free;
Delphi
1
2
3
4
5
procedure TMyThread.Execute;
begin
  t.Compress;
  MyThread.Terminate;
end;
Программа немного поработает а потом просто виснет. Что я сделал не так?
0
97 / 97 / 25
Регистрация: 25.04.2016
Сообщений: 525
25.10.2016, 23:38 10
Я вам дал рабочий исходник. Там все работает и ничего не виснет.
Трудно содрать уже оттуда?
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
26.10.2016, 00:57 11
Цитата Сообщение от Олег2000про Посмотреть сообщение
Что я сделал не так?
Честно говоря, почти всё что можно было сделать не так, вы сделали. Начиная с
Delphi
1
MyThread:=TMyThread.Create(False);
Ну почему False?

И заканчивая
Delphi
1
Image1.Picture.Assign(t);
Вы дали хоть миллисекунду только что созданному потоку чтобы хоть что-то сделать?
0
-4 / 0 / 0
Регистрация: 13.11.2015
Сообщений: 488
26.10.2016, 12:03  [ТС] 12
northener, как ему миллисекунду дать?
0
97 / 97 / 25
Регистрация: 25.04.2016
Сообщений: 525
26.10.2016, 14:16 13
Цитата Сообщение от Олег2000про Посмотреть сообщение
northener, как ему миллисекунду дать?
Прежде чем ему давать милисекунды определитесь как вообще работать с потоками.
Без понимая этого вы дальше вопросов "а почему трубы зеленые" не продвинетесь.

Вам дают рабочий код, вы вместо того, чтобы его посмотреть, разобраться, понять "а что вообще происходит и как", городите, извиняюсь огород из непонятной белиберды и продолжая упорно настаивать на своем, просите что-то сделать с этим.
0
D1973
26.10.2016, 20:43
  #14

Не по теме:

Цитата Сообщение от MyEternity Посмотреть сообщение
Прежде чем ему давать милисекунды...
MyEternity, ну дай ты ему эти несолько миллисекунд, жалко тебе, что-ли? :D

0
northener
27.10.2016, 01:07
  #15

Не по теме:

Цитата Сообщение от D1973 Посмотреть сообщение
MyEternity, ну дай ты ему эти несолько миллисекунд, жалко тебе, что-ли?
MyEternity, уже дал. Причём не миллисекунду, а гораздо больше. На сей момент уже больше 10 часов прошло с момента представления примера.
Но Олег2000, имхо совершенно неоправданно присоединил к своему нику частицу "про".

0
3586 / 2195 / 693
Регистрация: 29.05.2013
Сообщений: 9,376
27.10.2016, 02:58 16
Отчего неоправданно? Прослушал, проглядел, проигнорировал. Все верно - про.
0
-4 / 0 / 0
Регистрация: 13.11.2015
Сообщений: 488
27.10.2016, 14:30  [ТС] 17
northener, Почему это не оправдано? Я уже разобрался с твоего примера
0
HiredKiller
27.10.2016, 14:32
  #18

Не по теме:

:wall:

0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
27.10.2016, 14:34 19
Цитата Сообщение от Олег2000про Посмотреть сообщение
Я уже разобрался с твоего примера
покажи код, пожалуйста
0
-4 / 0 / 0
Регистрация: 13.11.2015
Сообщений: 488
27.10.2016, 14:35  [ТС] 20
qwertehok, мне код давать с его примера?
0
27.10.2016, 14:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.10.2016, 14:35
Помогаю со студенческими работами здесь

Лаги при просмотре видео (стримов на твиче/ютубе) при включенном Aero
При включённом аэро, невозможно смотреть стримы на твиче либо ютубе при разрешении более 720p, нет...

Лаги при запуске программы при свойстве-BackgroundImage
Значит вот такой глюк,попытаюсь его описать... Глюк на Vb.NET 1.Имеется frm_main и этой форме...

ASUS X550L - при работе от батареи все отлично, при подключении сетевого адаптера - фризы и лаги
ASUS X550L Материнская плата: X550LN Процессор: Intel Core i5-4210U CPU @ 1.70GHz ОЗУ: 6 ГБ ...

лаги при 60 фпс
Вообщем у меня 60 фпс,нагрузку и сами 60 фпс вы видите на ролике,но у меня тормозит игра,с винтом и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru